代码之家  ›  专栏  ›  技术社区  ›  n002213f

在JBoss上创建XA数据源到DB2

  •  4
  • n002213f  · 技术社区  · 15 年前

    我试图配置XA-DB2数据源, xa-datasource (基于 http://community.jboss.org/wiki/SetUpADB2Datasource )使用 com.ibm.db2.jcc.DB2XADataSource 阶级( local-tx-datasource 使用 com.ibm.db2.jcc.DB2Driver ). 目标服务器是DB2 Connect V9.7

    实际的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 node 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
    

    为什么驱动程序试图使用本机库?我需要在配置中添加什么吗?

    1 回复  |  直到 15 年前
        1
  •  5
  •   n002213f    15 年前

    解决方案是不使用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 为了解决问题。

    我希望这能帮其他人省去一些挫折和时间。