簡體   English   中英

通過JDBC連接到IBM IIB中的Microsoft SQL Server時出錯

[英]Error connecting to Microsoft SQL Server in IBM IIB via JDBC

我無法使用JDBC提供程序連接到Websphere IIB(以前稱為Message Broker)中的Microsoft SQL Server v.2008。 我已經根據IBM文檔創建了提供程序- 為類型4連接設置JDBC提供程序,並指定了有效的安全身份。 我還嘗試使用Microsoft的最新版本的sqljdbc4.jar和sqljdbc41.jar。

我正在嘗試使用以下方式獲得連接:

Connection conn = getJDBCType4Connection(THE_NAME_OF_THE_PROVIDER,JDBC_TransactionType.MB_TRANSACTION_AUTO)

我得到以下錯誤跟蹤:

Exception details:  message: java.lang.ExceptionInInitializerError stack trace: [java.lang.J9VMInternals.initialize(J9VMInternals.java:259) 
javax.crypto.KeyAgreement.getInstance(Unknown Source) 
com.ibm.jsse2.lb.g(lb.java:44) 
com.ibm.jsse2.lb.a(lb.java:108) 
com.ibm.jsse2.l$c_.a(l$c_.java:6) 
com.ibm.jsse2.l.a(l.java:80) 
com.ibm.jsse2.m.a(m.java:15) 
com.ibm.jsse2.m.h(m.java:13) 
com.ibm.jsse2.qc.a(qc.java:38) 
com.ibm.jsse2.qc.<init>(qc.java:632) 
com.ibm.jsse2.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:16) 
com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1606) 
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1324) 
com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:992) 
com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:828) 
com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:629) 
com.microsoft.sqlserver.jdbc.SQLServerPooledConnection.createNewConnection(SQLServerPooledConnection.java:60) 
com.microsoft.sqlserver.jdbc.SQLServerPooledConnection.<init>(SQLServerPooledConnection.java:42) 
com.microsoft.sqlserver.jdbc.SQLServerXAConnection.<init>(SQLServerXAConnection.java:30) 
com.microsoft.sqlserver.jdbc.SQLServerXADataSource.getXAConnection(SQLServerXADataSource.java:51) 
com.ibm.broker.jdbctype4.jdbcdbasemgr.JDBCType4Connection.createXAConnection(JDBCType4Connection.java:244) 
com.ibm.broker.jdbctype4.jdbcdbasemgr.JDBCType4DatabaseManager.getThreadOwnedConnections(JDBCType4DatabaseManager.java:308) 
com.ibm.broker.jdbctype4.localtrxn.JDBCType4SinglePhaseTrxnHandler.getConnection(JDBCType4SinglePhaseTrxnHandler.java:262) 
com.ibm.broker.jdbctype4.localtrxn.JDBCType4SinglePhaseTrxnHandler.getConnection(JDBCType4SinglePhaseTrxnHandler.java:154) 
com.ibm.broker.jdbctype4.connfact.JDBCType4ConnectionFactory.getConnection(JDBCType4ConnectionFactory.java:163) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:94) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) 
java.lang.reflect.Method.invoke(Method.java:619) 
com.ibm.broker.plugin.MbNode.getJDBCType4Connection(MbNode.java:1575) 
ru.cinimex.fr2back.FR2BACK_DB_InsertMessage_JavaCompute.fillInCache(FR2BACK_DB_InsertMessage_JavaCompute.java:115) 
ru.cinimex.fr2back.FR2BACK_DB_InsertMessage_JavaCompute.createCache(FR2BACK_DB_InsertMessage_JavaCompute.java:102) 
ru.cinimex.fr2back.FR2BACK_DB_InsertMessage_JavaCompute.evaluate(FR2BACK_DB_InsertMessage_JavaCompute.java:38) 
com.ibm.broker.javacompute.MbRuntimeJavaComputeNode.evaluate(MbRuntimeJavaComputeNode.java:339) 
com.ibm.broker.plugin.MbNode.evaluate(MbNode.java:1491)

我認為SQL Server驅動程序正在嘗試使用SSL,而SSL與IBM的Java發生沖突。 有沒有辦法阻止它完全使用SSL?

當我對Oracle數據庫執行相同的操作時,一切工作正常。 必須使用JDBC,而不是IIB的本機ODBC驅動程序。

如果要禁用Microsoft JDBC驅動程序對SSL的使用,應該可以通過將“ encrypt”數據源屬性設置為false來做到這一點。

https://msdn.microsoft.com/en-us/library/bb879920%28v=sql.110%29.aspx

如果您以編程方式創建和配置數據源,則以上內容適用。 在存在中間代碼處理的情況下,可能會在某處指定數據源屬性的名稱/值對,例如,在數據源配置中或您正在使用的API上。 您有機會在任何地方這樣做嗎? 如果這是WebSphere Application Server數據源,則它將位於數據源定制屬性(傳統)中或嵌套在server.xml(Liberty)的dataSource下的properties.microsoft.sqlserver元素中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM