Cannot connect to SQL server when SSL is enabled in JBoss EAP
Issue
-
My sqlserver is using a self-sign cert "hqdevsql2.cer". Then I copy the cert to jboss server.
-
1 ) I created a truststore using below command:
keytool -import -v -trustcacerts -alias hqdevsql2 -file hqdevsql2.cer -keystore hquatsa01keystore.jks
And then I specify the truststore in standalone.xml file:
<system-properties>
<property name="org.apache.tomcat.util.http.Parameters.MAX_COUNT" value="5000"/>
<property name="javax.net.ssl.trustStore" value="/data/app_certificate/hquatsa01keystore.jks"/>
<property name="javax.net.ssl.trustStorePassword=xxxxxxxx"/>
</system-properties>
But when I startup I got the error:
05:49:38,885 WARN [org.jboss.jca.core.connectionmanager.pool.strategy.PoolBySubject] (ServerService Thread Pool -- 57) IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: Could not create connection
at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:525)
at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory$1.run(XAManagedConnectionFactory.java:416)
at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory$1.run(XAManagedConnectionFactory.java:413)
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_71]
at javax.security.auth.Subject.doAs(Subject.java:415) [rt.jar:1.7.0_71]
at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAManagedConnectionFactory.java:412)
at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.createConnectionEventListener(SemaphoreArrayListManagedConnectionPool.java:834) [ironjacamar-core-impl-1.0.28.Final-redhat-1.jar:1.0.28.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:379) [ironjacamar-core-impl-1.0.28.Final-redhat-1.jar:1.0.28.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:406) [ironjacamar-core-impl-1.0.28.Final-redhat-1.jar:1.0.28.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:378) [ironjacamar-core-impl-1.0.28.Final-redhat-1.jar:1.0.28.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:354) [ironjacamar-core-impl-1.0.28.Final-redhat-1.jar:1.0.28.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:368) [ironjacamar-core-impl-1.0.28.Final-redhat-1.jar:1.0.28.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:491) [ironjacamar-core-impl-1.0.28.Final-redhat-1.jar:1.0.28.Final-redhat-1]
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:143)
at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:92) [hibernate-core-3.6.3.Final.jar:3.6.3.Final]
at com.appiancorp.rdbms.hb.LoggingDatasourceConnectionProvider.getConnection(LoggingDatasourceConnectionProvider.java:28) [appian-rdbms.jar:]
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:113) [hibernate-core-3.6.3.Final.jar:3.6.3.Final]
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2836) [hibernate-core-3.6.3.Final.jar:3.6.3.Final]
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2832) [hibernate-core-3.6.3.Final.jar:3.6.3.Final]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843) [hibernate-core-3.6.3.Final.jar:3.6.3.Final]
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906) [hibernate-entitymanager-3.6.3.Final.jar:3.6.3.Final]
at com.appiancorp.rdbms.hb.HbConfigurationHelper$1.call(HbConfigurationHelper.java:40) [appian-rdbms.jar:]
at com.appiancorp.rdbms.hb.HbConfigurationHelper$1.call(HbConfigurationHelper.java:37) [appian-rdbms.jar:]
at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:21) [appian-common.jar:]
at com.appiancorp.rdbms.hb.HbConfigurationHelper.buildEntityManagerFactory(HbConfigurationHelper.java:44) [appian-rdbms.jar:]
at com.appiancorp.rdbms.hb.DataSourceManagerHbImpl.getEntityManagerFactory(DataSourceManagerHbImpl.java:602) [appian-rdbms.jar:]
at com.appiancorp.rdbms.hb.DataSourceManagerHbImpl.getSessionFactory(DataSourceManagerHbImpl.java:595) [appian-rdbms.jar:]
at com.appiancorp.rdbms.hb.DataSourceManagerHbImpl.initialize(DataSourceManagerHbImpl.java:431) [appian-rdbms.jar:]
at com.appiancorp.rdbms.config.PrimaryDataSourceConfig.finish(PrimaryDataSourceConfig.java:22) [appian-rdbms.jar:]
at com.appiancorp.common.config.ConfigObject.init(ConfigObject.java:65) [appian-common.jar:]
at com.appiancorp.common.config.ConfigObjectRepository.initConfigObject(ConfigObjectRepository.java:372) [appian-common.jar:]
at com.appiancorp.common.config.ConfigObjectRepository.initConfigObject(ConfigObjectRepository.java:263) [appian-common.jar:]
at com.appiancorp.common.config.ConfigObjectRepository.init(ConfigObjectRepository.java:223) [appian-common.jar:]
at com.appiancorp.common.config.ConfigObjectRepository.create(ConfigObjectRepository.java:95) [appian-common.jar:]
at com.appiancorp.common.config.ConfigObjectRepository.create(ConfigObjectRepository.java:89) [appian-common.jar:]
at com.appiancorp.common.config.ConfigurationLoader.contextInitialized(ConfigurationLoader.java:43) [appian-common.jar:]
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3339) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3777) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:161) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
at org.jboss.as.web.deployment.WebDeploymentService.access$000(WebDeploymentService.java:59) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:94) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_71]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_71]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_71]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_71]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_71]
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1654) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1789) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:4838) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:6154) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:6106) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.SQLServerConnection$1ConnectionCommand.doExecute(SQLServerConnection.java:1756) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectionCommand(SQLServerConnection.java:1761) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.setTransactionIsolation(SQLServerConnection.java:2095) [sqljdbc4.jar:]
at com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolProxy.setTransactionIsolation(SQLServerConnectionPoolProxy.java:171) [sqljdbc4.jar:]
at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection.<init>(BaseWrapperManagedConnection.java:200)
at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.<init>(XAManagedConnection.java:68)
at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.newXAManagedConnection(XAManagedConnectionFactory.java:539)
at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:512)
... 46 more
- 2 ) I also tried to set the keystore setting in jdbc url. but still same error.
<xa-datasource-property name="URL">jdbc:sqlserver://Hqdevsql2.pcihl.com\\uat01:1443;databaseName=Appian_PrimaryDS;encrypt=true;trustServerCertification=true;trustStore=/data/app_certificate/hquatsa01keystore.jks;trustStorePassword=xxxxxxxx</xa-datasource-property>
Environment
- OpenJDK 1.6.0
- OpenJDK 1.7.0
- Oracle JDK 1.6.0
- Oracle JDK 1.7.0
- MSSQL JDBC driver
- JBoss Enterprise Application Platform
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
