1

JDBC プロバイダーを使用して、Websphere IIB (以前の Message Broker) で Microsoft SQL Server v. 2008 に接続できません。IBM の資料 (タイプ 4 接続用の JDBC プロバイダーのセットアップ) に従ってプロバイダーを作成し、有効なセキュリティー ID を指定しました。また、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 サーバー ドライバーが SSL を使用しようとしていると思われますが、これは IBM の Java と競合します。SSLをまったく使用しないようにする方法はありますか?

Oracle データベースで同じことを行っている場合、すべてがうまく機能します。IIB のネイティブ ODBC ドライバーではなく、JDBC を使用する必要があります。

4

1 に答える 1

1

Microsoft JDBC ドライバーによる SSL の使用を無効にする場合は、"encrypt" データ ソース プロパティを false の値に設定することで無効にできます。

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

上記は、データ ソースをプログラムで作成および構成する場合に適用されます。それを処理する中間コードがある場合、データ ソース プロパティの名前と値のペアを指定する場所がどこかにある可能性があります。たとえば、データ ソースの構成や使用している API などです。それをする機会がある場所はありますか?これが WebSphere Application Server データ ソースの場合、データ ソースのカスタム プロパティ (従来型) または server.xml の dataSource の下にネストされた properties.microsoft.sqlserver 要素 (Liberty) のいずれかになります。

于 2016-02-24T18:06:37.420 に答える