JDBC - 해당되는 글 2건
타 WAS에서 CLOB 함수를 이용하여 처리하는 부분이 있을 때, JBoss에서 사용하려면,  Oracle의 CLOB를 이용하도록 소스 코드의 변경이 필요하다.

그러나, JBoss의 Result Set에서 rs.getCLOB(1) 과 같이 사용하면 ClassCastException이 발생한다. JBoss에서 내부적으로 JDBC 함수들을 Wrapping하여 사용하기 때문인데,
java.lang.ClassCastException: org.jboss.resource.adapter.jdbc.WrappedResultSet

WrappedResultSet의 getUnderlyingResultSet() 함수를 이용하여, 원래의 ResultSet을 가져올 수 있다. 이를 이용하여 코드를 아래 처럼 작성하여야 한다.


ResultSet urs = (org.jboss.resource.adapter.jdbc.WrappedResultSet) rsClob).getUnderlyingResultSet();

CLOB clob = ((oracle.jdbc.OracleResultSet)urs).getCLOB(1);


컴파일을 위해서는 $SERVER_HOME/lib/jboss-common-jdbc-wrapper.jar 파일이 필요하다.

|
JBoss에서 JDBC DataSource 설정시에 <jndi-name>DataSourceName</jndi-name>에 이름을 지정하고 이를 application에서 JNDI를 통해서 참조하게 되는데, WebLogic의 경우에는 작성된 DataSourceName 으로 바로 참조할 수 있지만, JBoss의 경우엔 java:DataSourceName와 같이 앞에 java: 를 붙여야 참조할 수 있다.

WebLogic과 같이 java: 없이 참조하려면 JBoss의 데이터 소스를 지정하는 *-ds.xml 파일의 설정중에 use-java-context를 false로 설정하면 된다.
    <use-java-context>false</use-java-context>

또 한가지, 흔히 발생하는 오류중의 하나가 JDBC Driver Jar 파일을 WEB-INF\lib 디렉토리에 놓는 경우이다. 이럴 경우에 ClassCastException등 다양한 오류가 발생할 수 있다. JDBC Driver파일은 반드시, $SERVER_HOME/lib  디렉토리에 복사해 놓도록 한다.


|

놀새~'s Blog is powered by Daum & tistory