Erreur lors de la connection à Microsoft SQL Server dans IBM IIB via JDBC

Je ne peux pas me connecter à Microsoft SQL Server v. 2008 dans Websphere IIB (anciennement, Message Broker) avec un fournisseur JDBC. J'ai créé le fournisseur conformément à la documentation IBM – Configuration d'un fournisseur JDBC pour les connections de type 4 et indication d'une identité de security valide. J'ai également essayé d'utiliser les dernières versions de sqljdbc4.jar et sqljdbc41.jar de Microsoft.

J'essaie d'get la connection en utilisant:

Connection conn = getJDBCType4Connection(THE_NAME_OF_THE_PROVIDER,JDBC_TransactionType.MB_TRANSACTION_AUTO) 

Je reçois la trace d'erreur suivante:

 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.la(l.java:80) com.ibm.jsse2.ma(m.java:15) com.ibm.jsse2.mh(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) 

Je pense que le pilote du server SQL essaie d'utiliser SSL qui entre en conflit avec Java d'IBM. Existe-t-il un moyen de l'empêcher d'utiliser SSL?

Quand je fais la même chose avec une database Oracle, tout fonctionne bien. C'est une obligation d'utiliser JDBC et non les pilotes ODBC natifs de IIB.

Si vous souhaitez désactiver l'utilisation du protocole SSL par le pilote JDBC de Microsoft, il devrait être possible de le faire en affectant à la propriété de source de données "encrypt" la valeur false.

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

Ce qui précède s'appliquerait si vous créiez et configuriez la source de données par programme. Dans le cas où il y a un traitement de code intermédiaire, il est probable qu'il existe un endroit pour spécifier des paires nom / valeur de propriétés de source de données, par exemple, dans la configuration de source de données ou sur une API que vous utilisez. Y a-t-il un endroit où vous avez l'occasion de le faire? S'il s'agissait d'une source de données WebSphere Application Server, ce serait soit dans les propriétés personnalisées de la source de données (traditionnelles), soit dans l'élément properties.microsoft.sqlserver nested sous dataSource dans server.xml (Liberty).