JBoss Community

Securing JBoss Messaging and EJB3

reply from Alexander Hartner in JBoss Messaging - View the full discussion

I added a abc-jms-ds.xml file to my ear in which i define a JMS Provider and two connection factories, one with XA/TX support and one without

 

<?xml version="1.0" encoding="UTF-8"?>

<connection-factories>

 

<!-- The JMS provider loader -->

  <mbean code="org.jboss.jms.jndi.JMSProviderLoader"

      name="jboss.messaging:service=JMSProviderLoader,name=ABCJMSProvider">

    <attribute name="ProviderName">ABCJMSProvider</attribute>

    <attribute name="ProviderAdapterClass">

      org.jboss.jms.jndi.JNDIProviderAdapter

    </attribute>

    <!-- The combined connection factory -->

    <attribute name="FactoryRef">jms/ABCJMSConnectionFactoryClustered</attribute>

    <!-- The queue connection factory -->

    <attribute name="QueueFactoryRef">jms/ABCJMSConnectionFactoryClustered</attribute>

    <!-- The topic factory -->

    <attribute name="TopicFactoryRef">jms/ABCJMSConnectionFactoryClustered</attribute>

    <!-- Access JMS via HAJNDI -->

    <attribute name="Properties">

       java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

       java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

       java.naming.provider.url=${jboss.bind.address:localhost}:1100

       jnp.disableDiscovery=false

       jnp.partitionName=${jboss.partition.name:DefaultPartition}

       jnp.discoveryGroup=${jboss.partition.udpGroup:230.0.0.4}

       jnp.discoveryPort=1102

       jnp.discoveryTTL=16

       jnp.discoveryTimeout=5000

       jnp.maxRetries=1

    </attribute>

  </mbean>

 

  <!-- JMS XA Resource adapter, use this to get transacted JMS in beans -->

  <tx-connection-factory>

    <jndi-name>jms/ABCJMSConnectionFactory</jndi-name>

    <xa-transaction/>

    <rar-name>jms-ra.rar</rar-name>

    <track-connection-by-tx/>

    <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>

    <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>

    <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/ABCJMSProvider</config-property>

    <max-pool-size>20</max-pool-size>

    <security-domain-and-application>EncryptJMSPassword</security-domain-and-application>

    <use-java-context>false</use-java-context>

  </tx-connection-factory>

 

  <no-tx-connection-factory>

    <jndi-name>jms/ABCJMSConnectionFactoryClustered</jndi-name>

    <rar-name>jms-ra.rar</rar-name>

    <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>

    <min-pool-size>0</min-pool-size>

    <max-pool-size>20</max-pool-size>

    <blocking-timeout-millis>50000</blocking-timeout-millis>

    <idle-timeout-minutes>15</idle-timeout-minutes>

    <security-domain-and-application>EncryptJMSPassword</security-domain-and-application>

    <use-java-context>false</use-java-context>

  </no-tx-connection-factory>

 

</connection-factories>

I also specify the provide in my ejb-jar.xml file as follows:

        <message-driven>

            <ejb-name>JobRequestListener</ejb-name>

            <ejb-class>com.abc.backend.jobs.JobRequestListener</ejb-class>

            <message-destination-link>JobRequests</message-destination-link>

            <activation-config>

                <activation-config-property>

                    <activation-config-property-name>providerAdapterJNDI</activation-config-property-name>

                    <activation-config-property-value>java:ABCJMSProvider</activation-config-property-value>

                </activation-config-property>

            </activation-config>

and map the injected connection factory to the new JNDI name in jboss.xml as follows:

            <resource-ref>

                <res-ref-name>jms/ConnectionFactory</res-ref-name>

                <jndi-name>jms/ABCJMSConnectionFactoryClustered</jndi-name>

            </resource-ref>

However when I deploy I get the following exception

 

18:56:12,988 INFO  [JmsActivation] Attempting to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@7736b039(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@61a48515 destination=queue/abc/SendEmails isTopic=false tx=true durable=false reconnect=10 provider=javaABCJMSProvider user=jmsuser pass=<not shown> maxMessages=1 minSession=1 maxSession=1 keepAlive=60000 useDLQ=true DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5)
18:56:12,990 ERROR [JmsActivation] Unable to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@7736b039(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@61a48515 destination=queue/abc/SendEmails isTopic=false tx=true durable=false reconnect=10 provider=java:ABCJMSProvider user=jmsuser pass=<not shown> maxMessages=1 minSession=1 maxSession=1 keepAlive=60000 useDLQ=true DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5)
javax.jms.IllegalStateException: This method is not applicable inside the application server. See the J2EE spec, e.g. J2EE1.4 Section 6.6
        at org.jboss.resource.adapter.jms.JmsSessionFactoryImpl.setExceptionListener(JmsSessionFactoryImpl.java:224)
        at org.jboss.resource.adapter.jms.inflow.dlq.AbstractDLQHandler.setupDLQConnection(AbstractDLQHandler.java:142)
        at org.jboss.resource.adapter.jms.inflow.dlq.AbstractDLQHandler.setup(AbstractDLQHandler.java:83)
        at org.jboss.resource.adapter.jms.inflow.dlq.JBossMQDLQHandler.setup(JBossMQDLQHandler.java:48)
        at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupDLQ(JmsActivation.java:369)
        at org.jboss.resource.adapter.jms.inflow.JmsActivation.setup(JmsActivation.java:315)
        at org.jboss.resource.adapter.jms.inflow.JmsActivation.handleFailure(JmsActivation.java:259)
        at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:639)
        at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
        at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
        at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:756)

Reply to this message by going to Community

Start a new discussion in JBoss Messaging at Community