<p>Since longer time, I use BIRT to create reports based on the data of an external database server. Because this server offers a SOAP API, I use the 'Web Service Data Source' to connect to the server and fetch the data.</p>
<p>This works fine until a few days ago - but now, I get the following sequence of exceptions:</p>
<pre class="_prettyXprint">
org.eclipse.birt.report.engine.api.EngineException: An exception occurred during processing. Please see the following message for details:
Cannot open the connection for the driver: org.eclipse.datatools.enablement.oda.ws.
org.eclipse.datatools.connectivity.oda.OdaException
at org.eclipse.birt.report.engine.executor.ExecutionContext.addException(ExecutionContext.java:1245)
at org.eclipse.birt.report.engine.executor.ExecutionContext.addException(ExecutionContext.java:1224)
[...]
Caused by: org.eclipse.birt.report.data.adapter.api.AdapterException: An exception occurred during processing. Please see the following message for details:
Cannot open the connection for the driver: org.eclipse.datatools.enablement.oda.ws.
org.eclipse.datatools.connectivity.oda.OdaException
at org.eclipse.birt.report.data.adapter.impl.DataRequestSessionImpl.execute(DataRequestSessionImpl.java:671)
at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:152)
[...]
Caused by: org.eclipse.birt.data.engine.odaconsumer.OdaDataException: Cannot open the connection for the driver: org.eclipse.datatools.enablement.oda.ws.
org.eclipse.datatools.connectivity.oda.OdaException
at org.eclipse.birt.data.engine.odaconsumer.ExceptionHandler.newException(ExceptionHandler.java:54)
at org.eclipse.birt.data.engine.odaconsumer.ConnectionManager.openConnection(ConnectionManager.java:177)
[...]
Caused by: org.eclipse.datatools.connectivity.oda.OdaException
at org.eclipse.datatools.enablement.oda.ws.impl.Connection.open(Connection.java:81)
at org.eclipse.datatools.connectivity.oda.consumer.helper.OdaConnection.open(OdaConnection.java:250)
at org.eclipse.birt.data.engine.odaconsumer.ConnectionManager.openConnection(ConnectionManager.java:165)
[...]
javax.net.ssl.SSLException: Server key
at sun.security.ssl.Handshaker.throwSSLException(Handshaker.java:1260)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:283)
[...]
Caused by: java.security.spec.InvalidKeySpecException: Unknown KeySpec type: java.security.spec.ECPublicKeySpec
at org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory.engineGeneratePublic(Unknown Source)
at java.security.KeyFactory.generatePublic(KeyFactory.java:334)
at sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.<init>(HandshakeMessage.java:1060)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:278)
... 107 more
</pre>
<p>Maybe the provider of the database server has changed their SSL certificate and got another CA chain. I noticed that the intermediate CA use SHA384withRSA as signature algorithm. (see <a data-ipb='nomediaparse' href='
https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/979/108/domain-validation-sha-2'>COMODO, Domain Validation (SHA-2)</a>).</p>
<p> </p>
<p>So, what can I do to to make my system running again? Please ask, if you need further information.</p>
<p> </p>
<p>Remark: The same SOAP request from a Windows 7 client works fine. There I noticed, that the Windows 7 client uses TLSv1.2 to establish the SSL connection. The Linux system of my server (see below) uses TLSv1.</p>
<p> </p>
<p>The configuration of my Java WebServer:</p>
<ul><li>Debian Wheezy</li>
<li>Java: OpenJDK 1.7.0u111</li>
<li>Tomcat 7.0.28
<ul><li>https connector uses JSSE with sslProtocol="TLS"</li>
</ul></li>
<li>BIRT Runtime V4.5.0
<ul><li>DTP V1.12.0</li>
<li>org.eclipse.datatools.enablement.oda.ws V1.2.6</li>
</ul></li>
</ul><p>Thanks Friedbert</p>
<p> </p>