2010-10-21 222 views
4

我嘗試配置使用com.ibm.db2.jcc.DB2XADataSource類的XA DB2數據源,xa-datasource(基於http://community.jboss.org/wiki/SetUpADB2Datasource)(local-tx-datasource作品使用com.ibm.db2.jcc.DB2Driver)。目標服務器的DB2 Connect V9.7創建XA數據源到DB2在JBoss

實際XA-數據源配置:

<xa-datasource> 
    <jndi-name>jdbc/DB2ServerDS</jndi-name> 
    <use-java-context>false</use-java-context> 
    <track-connection-by-tx>true</track-connection-by-tx> 
    <xa-datasource-class>com.ibm.db2.jcc.DB2XADataSource</xa-datasource-class> 
    <xa-datasource-property name="URL">jdbc:db2://db2server:50000/FINDB</xa-datasource-property> 
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DB2ExceptionSorter</exception-sorter-class-name> 
    <xa-datasource-property name="DriverType">4</xa-datasource-property> 
    <check-valid-connection-sql>SELECT * FROM ACC.SETTINGS 1=2</check-valid-connection-sql> 
    <user-name>findbuser</user-name> 
    <password>findbuser</password> 
    <min-pool-size>2</min-pool-size> 
    <max-pool-size>10</max-pool-size> 
    <blocking-timeout-millis>10000</blocking-timeout-millis> 
    <type-mapping>DB2</type-mapping> 
    <no-tx-separate-pools/> 
</xa-datasource> 

,並在JBoss節點lib目錄下的jar:

db2umplugin.jar   
db2policy.jar   
db2dbgm.jar    
db2jcc_license_cu.jar 
db2jcc.jar    
db2jcc4.jar    
db2java.zip    
db2jcc_license_cisuz.jar 

,但我發現了錯誤:

Caused by: com.ibm.db2.jcc.am.SqlException: [jcc][10389][12245][3.57.82] Failure in loading native library db2jcct2, java.lang.UnsatisfiedLinkError: no db2jcct2 in java.library.path: ERRORCODE=-4472, SQLSTATE=null 

爲XA的驅動程序試圖使用本機庫,儘管我很USI一個JDBC Type 4驅動程序。

爲什麼驅動程序試圖使用本機庫?有什麼我需要添加到我的配置?

回答

5

解決方案是不使用URL來指定連接設置。

<xa-datasource> 
    <jndi-name>jdbc/DB2ServerDS</jndi-name> 
    <use-java-context>false</use-java-context> 
    <track-connection-by-tx>true</track-connection-by-tx> 
    <xa-datasource-class>com.ibm.db2.jcc.DB2XADataSource</xa-datasource-class> 
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DB2ExceptionSorter</exception-sorter-class-name> 
    <xa-datasource-property name="ServerName">db2server</xa-datasource-property> 
    <xa-datasource-property name="PortNumber">50000</xa-datasource-property> 
    <xa-datasource-property name="DatabaseName">FINDB</xa-datasource-property> 
    <xa-datasource-property name="DriverType">4</xa-datasource-property> 
    <xa-datasource-property name="User">findbuser</xa-datasource-property> 
    <xa-datasource-property name="Password">findbuser</xa-datasource-property> 
    <xa-datasource-property name="DriverType">4</xa-datasource-property> 
    <check-valid-connection-sql>SELECT * FROM ACC.SETTINGS 1=2</check-valid-connection-sql> 
    <user-name>findbuser</user-name> 
    <password>findbuser</password> 
    <min-pool-size>2</min-pool-size> 
    <max-pool-size>10</max-pool-size> 
    <blocking-timeout-millis>10000</blocking-timeout-millis> 
    <type-mapping>DB2</type-mapping> 
    <no-tx-separate-pools/> 
</xa-datasource> 

感謝http://dev.wavemaker.com/forums/?q=node/3127

正確的罐子

db2jcc_license_cu.jar    
db2jcc4.jar       
db2jcc_license_cisuz.jar 

你應該得到這樣的錯誤:

org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-5042, SQLSTATE=  , SQLERRMC= ;1208;FINDBUSER;FINDB;QDB2; ; ; ;1208; , DRIVER=4.7.85) 

檢查http://www-01.ibm.com/support/docview.wss?uid=swg21405243&myns=swgimgmt&mynp=OCSSEPGG&mync=R的解決方案。

我希望這可以爲他人節省一些挫折和時間。

+0

我認爲license_cu和license_cisuz不應該同時使用。 cu是免費許可證,cisuz是包含更多平臺的商業版本(後綴中的每個字母一個) - 您需要一個或另一個,而不是兩個。 – eis 2016-02-23 16:41:28