336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
이거 해결할려고 구글일 무지막지하게 했다.
기존에 프로시져에 스트림 방식으로 저장을 하게 되면 장문 입력이 안되는 문제가 있기 때문이다.
private static CLOB getCLOB( String clobData, Connection conn ) throws Exception
{
CLOB tempClob = null;
try
{
// create a new temporary CLOB
System.out.println("Get Temporary LOB data1");
tempClob = CLOB.createTemporary( conn, true, CLOB.DURATION_SESSION );
System.out.println("Get Temporary LOB data2");
// Open the temporary CLOB in readwrite mode
tempClob.open( CLOB.MODE_READWRITE );
// Get the output stream to write
Writer tempClobWriter = tempClob.getCharacterOutputStream( );
// Write the data into the temporary CLOB
tempClobWriter.write( clobData );
// Flush and close the stream
tempClobWriter.flush();
tempClobWriter.close();
// Close the temporary CLOB
tempClob.close( );
}
catch ( Exception exp )
{
exp.getMessage();
tempClob.freeTemporary();
}
return tempClob;
}
{
CLOB tempClob = null;
try
{
// create a new temporary CLOB
System.out.println("Get Temporary LOB data1");
tempClob = CLOB.createTemporary( conn, true, CLOB.DURATION_SESSION );
System.out.println("Get Temporary LOB data2");
// Open the temporary CLOB in readwrite mode
tempClob.open( CLOB.MODE_READWRITE );
// Get the output stream to write
Writer tempClobWriter = tempClob.getCharacterOutputStream( );
// Write the data into the temporary CLOB
tempClobWriter.write( clobData );
// Flush and close the stream
tempClobWriter.flush();
tempClobWriter.close();
// Close the temporary CLOB
tempClob.close( );
}
catch ( Exception exp )
{
exp.getMessage();
tempClob.freeTemporary();
}
return tempClob;
}
문제는 위와 같이 할 때, 커넥션을 넘기는 부분이다. JNDI 방식으로 맺은 커넥션으로 할 경우 CLOB.createTemporary(~~~) 에서 임시 LOB을 얻지를 못한다.
String dbUrl = "jdbc:oracle:thin:@192.168.1.3:1521:ora8";
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(dbUrl, "userid","password");
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(dbUrl, "userid","password");
해답은 위와 같이 직접 오라클 커넥션 드라이버를 로딩 한 후, 그 Connection을 넘겨야 하는 것이다.
물론 이렇게 넘겨지 LOB 데이터는 Procedure 에서 Insert 하는 방법은 많이들 알고 있는 EMPTY_CLOB() (본인은 CLOB 이었다..) 방식으로 하면 된다. 다른 방법도 있지만,,,(DBMS_LOB 패키지 사용) 본인은 귀찮아서 가장 간단한 방법(?)을 사용했다.
그렇다면 왜 저 방법을 써야 하는걸까??? 그 방법을 다시 Googling 해야 것다. 혹시 아시는 분은 댓글을 달아 주시는 센스..~~~
'Programming > Java' 카테고리의 다른 글
우분투 톰캣 다중 인스턴스 (Ubuntu 14.04 + Tomcat 8 multiple instances) (0) | 2014.09.09 |
---|---|
우분투 14.04에 톰캣8 (Tomcat 8) 설치 ,, 후속작업 (0) | 2014.09.06 |
우분투 14.04에서 톰캣 8 (Tomcat 8) 설치해보기~! (0) | 2014.09.06 |
우분투에 Oracle Java (오라클 자바) 설치하기 (2) | 2014.08.01 |
Struts2 2.1 버젼과 2.0버젼대의 차이점 (0) | 2009.08.25 |