[jboss-user] [IronJacamar] - Bug in creating ManagedConnectionFactory instance?

Andreas Mueller do-not-reply at jboss.com
Tue May 29 12:02:42 EDT 2012


Andreas Mueller [https://community.jboss.org/people/amueller] created the discussion

"Bug in creating ManagedConnectionFactory instance?"

To view the discussion, visit: https://community.jboss.org/message/738535#738535

--------------------------------------------------------------
This is my configuration (AS 7.1.1):

        <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0">
            <resource-adapters>
                <resource-adapter>
                    <archive>
                        swiftmq_jca16.rar
                    </archive>
                    <transaction-support>XATransaction</transaction-support>
                    <config-property name="debugMode">
                        true
                    </config-property>
                    <connection-definitions>
                        <connection-definition class-name="*com.swiftmq.connector.v16.outbound.ManagedConnectionFactoryImpl*" jndi-name="java:/comp/env/CF" pool-name="SwiftMQConnectionFactoryPool">
                            <security>
                                <application/>
                            </security>
                        </connection-definition>
                    </connection-definitions>
                    <admin-objects>
                        <admin-object class-name="com.swiftmq.jms.QueueImpl" jndi-name="java:/com/env/testqueue1" pool-name="testqueue1">
                            <config-property name="queueName">
                                testqueue1 at router1
                            </config-property>
                        </admin-object>
                    </admin-objects>
                </resource-adapter>
            </resource-adapters>
        </subsystem>

This is an excerpt of the ra.xml for the outbound connection factories:

    <outbound-resourceadapter>
      <connection-definition>
        <managedconnectionfactory-class>
*com.swiftmq.connector.v16.outbound.ManagedConnectionFactoryImpl*
        </managedconnectionfactory-class>
        <config-property>
          <config-property-name>connectionFactoryName</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
          <config-property-value>QueueConnectionFactory</config-property-value>
        </config-property>
        <config-property>
          <config-property-name>userName</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <config-property-name>password</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <connectionfactory-interface>
          javax.jms.QueueConnectionFactory
        </connectionfactory-interface>
        <connectionfactory-impl-class>
          com.swiftmq.connector.v16.outbound.ConnectionFactoryImpl
        </connectionfactory-impl-class>
        <connection-interface>
          javax.jms.QueueConnection
        </connection-interface>
        <connection-impl-class>
 *com.swiftmq.connector.v16.outbound.QueueConnectionImpl*
        </connection-impl-class>
      </connection-definition>
      <connection-definition>
        <managedconnectionfactory-class>
          com.swiftmq.connector.v16.outbound.ManagedConnectionFactoryImpl
        </managedconnectionfactory-class>
        <config-property>
          <config-property-name>connectionFactoryName</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
          <config-property-value>TopicConnectionFactory</config-property-value>
        </config-property>
        <config-property>
          <config-property-name>userName</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <config-property-name>password</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <connectionfactory-interface>
          javax.jms.TopicConnectionFactory
        </connectionfactory-interface>
        <connectionfactory-impl-class>
          com.swiftmq.connector.v16.outbound.ConnectionFactoryImpl
        </connectionfactory-impl-class>
        <connection-interface>
          javax.jms.TopicConnection
        </connection-interface>
        <connection-impl-class>
          com.swiftmq.connector.v16.outbound.TopicConnectionImpl
        </connection-impl-class>
      </connection-definition>
      <connection-definition>
        <managedconnectionfactory-class>
*com.swiftmq.connector.v16.outbound.ManagedConnectionFactoryImpl*
        </managedconnectionfactory-class>
        <config-property>
          <config-property-name>connectionFactoryName</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
          <config-property-value>ConnectionFactory</config-property-value>
        </config-property>
        <config-property>
          <config-property-name>userName</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <config-property-name>password</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <connectionfactory-interface>
          javax.jms.ConnectionFactory
        </connectionfactory-interface>
        <connectionfactory-impl-class>
          com.swiftmq.connector.v16.outbound.ConnectionFactoryImpl
        </connectionfactory-impl-class>
        <connection-interface>
          javax.jms.Connection
        </connection-interface>
        <connection-impl-class>
          com.swiftmq.connector.v16.outbound.ConnectionImpl
        </connection-impl-class>
      </connection-definition>
      <transaction-support>XATransaction</transaction-support>
      <authentication-mechanism>
        <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
        <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
      </authentication-mechanism>
      <reauthentication-support>false</reauthentication-support>
    </outbound-resourceadapter>

As you see, class *com.swiftmq.connector.v16.outbound.ManagedConnectionFactoryImpl* is used to create 3 different Types of JMS connection factories (Queue, Topic and unified). If I now deploy and start the RA, it seems JBoss fetches all entries with the name of the specified ManagedConnectionFactory and creates a JNDI entry which fails because the name is already registered:

17:57:38,552 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-13) JBAS015876: Starting deployment of "swiftmq_jca16.rar"
17:57:38,905 INFO  [stdout] (MSC service thread 1-4) [SwiftMQ | ManagedConnectionFactoryImpl, connectionFactoryName=*QueueConnectionFactory*]/createConnectionFactory, connectionManager=org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl at 156a6be ...
17:57:38,906 INFO  [stdout] (MSC service thread 1-4) [SwiftMQ | ManagedConnectionFactoryImpl, connectionFactoryName=QueueConnectionFactory]/createConnectionFactory, connectionManager=org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl at 156a6be returns: com.swiftmq.connector.v16.outbound.ConnectionFactoryImpl at 147bc1
17:57:38,907 INFO  [org.jboss.as.deployment.connector] (MSC service thread 1-4) JBAS010406: Registered connection factory java:/comp/env/CF
17:57:38,910 INFO  [stdout] (MSC service thread 1-4) [SwiftMQ | ManagedConnectionFactoryImpl, connectionFactoryName=*TopicConnectionFactory*]/createConnectionFactory, connectionManager=org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl at 7c9b46 ...
17:57:38,910 INFO  [stdout] (MSC service thread 1-4) [SwiftMQ | ManagedConnectionFactoryImpl, connectionFactoryName=TopicConnectionFactory]/createConnectionFactory, connectionManager=org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl at 7c9b46 returns: com.swiftmq.connector.v16.outbound.ConnectionFactoryImpl at b635d7
17:57:38,911 INFO  [org.jboss.as.deployment.connector] (MSC service thread 1-4) JBAS010406: Registered connection factory java:/comp/env/CF
17:57:38,913 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.ra.deployment."swiftmq_jca16.rar_1": org.jboss.msc.service.StartException in service jboss.ra.deployment."swiftmq_jca16.rar_1": org.jboss.msc.service.StartException in anonymous service: JBAS010446: Failed to start RA deployment [swiftmq_jca16]
...
Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.connector.connection-factory.java:/comp/env/CF is already registered

This seems to be a bug for me. Or is there a way to configure it?


Thanks,
Andreas
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/738535#738535]

Start a new discussion in IronJacamar at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2098]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20120529/984bc318/attachment-0001.html 


More information about the jboss-user mailing list