Cannot connect to SQL server when SSL is enabled in JBoss EAP

Solution Verified - Updated -

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.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.