Bug 1083457 - For xa-datasource testConnection should account for deployment classloader
Summary: For xa-datasource testConnection should account for deployment classloader
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: JBoss Enterprise Application Platform 6
Classification: JBoss
Component: JCA
Version: 6.2.2
Hardware: All
OS: All
high
high
Target Milestone: ER6
: EAP 6.3.0
Assignee: Jesper Pedersen
QA Contact: Martin Simka
Russell Dickenson
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-04-02 09:44 UTC by Jay SenSharma
Modified: 2018-12-06 16:14 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2014-06-28 15:40:40 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker WFLY-3205 0 Major Resolved For xa-datasource testConnection should account for deployment classloader 2016-01-08 10:32:15 UTC

Description Jay SenSharma 2014-04-02 09:44:35 UTC
Description of problem:
=======================
The fix mentioned in https://bugzilla.redhat.com/show_bug.cgi?id=1007181  resolves the issue for plain Non-XA dataSources. However if an XA-DataSource is configured with the "ldap" based database connection URL then it fails with the following Error:

{code}
14:54:35,985 ERROR [org.jboss.jca.core.tx.jbossts.XAResourceRecoveryImpl] (Periodic Recovery) IJ000906: Error during crash recovery: java:/OracleXA_DS (Could not create connection): javax.resource.ResourceException: Could not create connection
	at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:461)
	at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAManagedConnectionFactory.java:398)
	at org.jboss.jca.core.tx.jbossts.XAResourceRecoveryImpl.open(XAResourceRecoveryImpl.java:343)
	at org.jboss.jca.core.tx.jbossts.XAResourceRecoveryImpl.getXAResources(XAResourceRecoveryImpl.java:170)
	at com.arjuna.ats.internal.jbossatx.jta.XAResourceRecoveryHelperWrapper.getXAResources(XAResourceRecoveryHelperWrapper.java:51) [jbossjts-integration-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]
	at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.resourceInitiatedRecoveryForRecoveryHelpers(XARecoveryModule.java:516) [jbossjts-jacorb-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]
	at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkFirstPass(XARecoveryModule.java:182) [jbossjts-jacorb-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]
	at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:743) [jbossjts-jacorb-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]
	at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:371) [jbossjts-jacorb-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]
Caused by: java.sql.SQLRecoverableException: Io exception: JNDI Package failurejavax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory com.sun.jndi.ldap.LdapCtxFactory from classloader ModuleClassLoader for Module "org.jboss.jts:main" from local module loader @172c218 (finder: local module finder @124e48f (roots: /home/userone/jboss-eap-6.2.2_Patched/modules,/home/userone/jboss-eap-6.2.2_Patched/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.2.2.CP,/home/userone/jboss-eap-6.2.2_Patched/modules/system/layers/base)) [Root exception is java.lang.ClassNotFoundException: com.sun.jndi.ldap.LdapCtxFactory from [Module "org.jboss.jts:main" from local module loader @172c218 (finder: local module finder @124e48f (roots: /home/userone/jboss-eap-6.2.2_Patched/modules,/home/userone/jboss-eap-6.2.2_Patched/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.2.2.CP,/home/userone/jboss-eap-6.2.2_Patched/modules/system/layers/base))]]
	at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:101)
	at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:229)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:458)
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:411)
	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490)
	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:474)
	at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:275)
	at oracle.jdbc.xa.client.OracleXADataSource.getPooledConnection(OracleXADataSource.java:454)
	at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:159)
	at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:130)
	at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:444)
	... 8 more

14:54:53,745 WARN  [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (management-handler-thread - 3) 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:461) [ironjacamar-jdbc-1.0.23.Final-redhat-5.jar:1.0.23.Final-redhat-5]
	at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAManagedConnectionFactory.java:398) [ironjacamar-jdbc-1.0.23.Final-redhat-5.jar:1.0.23.Final-redhat-5]
	at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.createConnectionEventListener(SemaphoreArrayListManagedConnectionPool.java:781) [ironjacamar-core-impl-1.0.23.Final-redhat-5.jar:1.0.23.Final-redhat-5]
	at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:344) [ironjacamar-core-impl-1.0.23.Final-redhat-5.jar:1.0.23.Final-redhat-5]
	at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:397) [ironjacamar-core-impl-1.0.23.Final-redhat-5.jar:1.0.23.Final-redhat-5]
	at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:365) [ironjacamar-core-impl-1.0.23.Final-redhat-5.jar:1.0.23.Final-redhat-5]
	at org.jboss.jca.core.connectionmanager.pool.AbstractPool.internalTestConnection(AbstractPool.java:627) [ironjacamar-core-impl-1.0.23.Final-redhat-5.jar:1.0.23.Final-redhat-5]
	at org.jboss.jca.core.connectionmanager.pool.strategy.OnePool.testConnection(OnePool.java:89) [ironjacamar-core-impl-1.0.23.Final-redhat-5.jar:1.0.23.Final-redhat-5]
	at org.jboss.as.connector.subsystems.common.pool.PoolOperations$TestConnectionInPool.invokeCommandOn(PoolOperations.java:143) [jboss-as-connector-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.connector.subsystems.common.pool.PoolOperations$1.execute(PoolOperations.java:82) [jboss-as-connector-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:601) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:479) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.AbstractOperationContext.completeStepInternal(AbstractOperationContext.java:283) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:278) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:231) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:137) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.doExecute(ModelControllerClientOperationHandler.java:173) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.access$300(ModelControllerClientOperationHandler.java:105) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:125) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:121) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_21]
	at javax.security.auth.Subject.doAs(Subject.java:415) [rt.jar:1.7.0_21]
	at org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:94) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1.execute(ModelControllerClientOperationHandler.java:121) [jboss-as-controller-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
	at org.jboss.as.protocol.mgmt.AbstractMessageHandler$2$1.doExecute(AbstractMessageHandler.java:283)
	at org.jboss.as.protocol.mgmt.AbstractMessageHandler$AsyncTaskRunner.run(AbstractMessageHandler.java:504)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21]
	at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]
	at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final-redhat-1.jar:2.1.1.Final-redhat-1]
Caused by: java.sql.SQLRecoverableException: Io exception: JNDI Package failurejavax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory com.sun.jndi.ldap.LdapCtxFactory from classloader ModuleClassLoader for Module "org.jboss.as.connector:main" from local module loader @172c218 (finder: local module finder @124e48f (roots: /home/userone/jboss-eap-6.2.2_Patched/modules,/home/userone/jboss-eap-6.2.2_Patched/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.2.2.CP,/home/userone/jboss-eap-6.2.2_Patched/modules/system/layers/base)) [Root exception is javax.naming.CommunicationException: example.com:3060 [Root exception is java.net.ConnectException: Connection timed out]]
	at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:101)
	at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:229)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:458)
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:411)
	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490)
	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:474)
	at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:275)
	at oracle.jdbc.xa.client.OracleXADataSource.getPooledConnection(OracleXADataSource.java:454)
	at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:159)
	at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:130)
	at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:444) [ironjacamar-jdbc-1.0.23.Final-redhat-5.jar:1.0.23.Final-redhat-5]
	... 29 more

{code}



Version-Release number of selected component (if applicable):



How reproducible:
=================

Steps to Reproduce:
1. Create a DataSource as following which uses the "ldap" protocol in the database connection url:
{code}
        <subsystem xmlns="urn:jboss:domain:datasources:1.1">
            <datasources>
                <xa-datasource jndi-name="java:/OracleXA_DS" pool-name="OracleXA_DS" enabled="true">
                    <xa-datasource-property name="ServerName">
                        example.com
                    </xa-datasource-property>
                    <xa-datasource-property name="DatabaseName">
                        TestDB
                    </xa-datasource-property>
                    <xa-datasource-property name="URL">
                        jdbc:oracle:thin:@ldap://example.com:3060/test,cn=OracleA,dc=worldA
                    </xa-datasource-property>
                    <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
                    <driver>oracle</driver>
                    <security>
                        <user-name>jboss</user-name>
                        <password>jboss</password>
                    </security>
                </xa-datasource>
                <drivers>
                    <driver name="oracle" module="com.oracle.jdbc6"/>
                </drivers>
            </datasources>
        </subsystem>
{code}


2. Start the EAP6.2.2 instance

3. Now using the jboss-cli utility try testing the connection as following:

{code}
/subsystem=datasources/xa-data-source=OracleXA_DS:test-connection-in-pool
{code}


Actual results:
===============
Error mentioned above



Expected results:
=============== 
DataSource test should have succeeded


Additional info:

Comment 11 Kabir Khan 2014-06-10 08:48:49 UTC
Jay, yes seems I forgot to set the milestone when merging. Setting to ON_QA for ER6

Comment 12 Martin Simka 2014-06-20 10:39:10 UTC
Verified in 6.3.0.ER7


Note You need to log in before you can comment on or make changes to this bug.