Integrate JBoss MDB with Weblogic JMS Server using Generic JMS RA

415 views
Skip to first unread message

zhushe...@gmail.com

unread,
Oct 31, 2017, 4:51:29 AM10/31/17
to Generic JMS JCA Resource Adapter for JBoss AS
Hi,

I want to Integrate JBoss MDB with Weblogic JMS Server using Generic JMS RA. But I failed in a issue, please help.
Many thanks!

error log:

15:46:20,085 WARN  [org.jboss.resource.adapter.jms.inflow.JmsActivation] (default-threads - 1) Failure in jms activation org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@3120f6fe(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@54239517 destination=inboundQueue destinationType=javax.jms.Queue acknowledgeMode=Auto-acknowledge subscriptionDurability=false reconnectInterval=10 reconnectAttempts=-1 user=weblogic password=<not shown> maxMessages=1 minSession=1 maxSession=15 connectionFactory=inboundConnectionFactory jndiParameters={java.naming.provider.url=t3://10.182.243.250:7001, java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory, java.naming.security.principal=weblogic, java.naming.security.credentials=<not shown>}): java.lang.ExceptionInInitializerError
at weblogic.utils.LocatorUtilities.getService(LocatorUtilities.java:30)
at weblogic.security.acl.internal.RemoteAuthenticate.authenticate(RemoteAuthenticate.java:56)
at weblogic.jndi.WLInitialContextFactoryDelegate.authenticateRemotely(WLInitialContextFactoryDelegate.java:927)
at weblogic.jndi.WLInitialContextFactoryDelegate.pushSubject(WLInitialContextFactoryDelegate.java:857)
at weblogic.jndi.WLInitialContextFactoryDelegate.newContext(WLInitialContextFactoryDelegate.java:609)
at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:418)
at weblogic.jndi.Environment.getContext(Environment.java:351)
at weblogic.jndi.Environment.getContext(Environment.java:320)
at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:119)
at org.jboss.as.naming.InitialContext.getDefaultInitCtx(InitialContext.java:114)
at org.jboss.as.naming.InitialContext.init(InitialContext.java:99)
at javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)
at org.jboss.as.naming.InitialContext.<init>(InitialContext.java:89)
at org.jboss.as.naming.InitialContextFactory.getInitialContext(InitialContextFactory.java:43)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.init(InitialContext.java:244)
at javax.naming.InitialContext.<init>(InitialContext.java:216)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.convertStringToContext(JmsActivation.java:332)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupActivation(JmsActivation.java:309)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.access$100(JmsActivation.java:57)
at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:543)
at org.jboss.jca.core.workmanager.WorkWrapper.run(WorkWrapper.java:226)
at org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33)
at org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:808)
at org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45)
at org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:828)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: A MultiException has 1 exceptions.  They are:
1. java.lang.NullPointerException

at weblogic.server.GlobalServiceLocator.getServiceLocator(GlobalServiceLocator.java:245)
at weblogic.utils.LocatorUtilities$Locator.<clinit>(LocatorUtilities.java:18)
... 29 more
Caused by: java.lang.NullPointerException
at org.glassfish.hk2.utilities.ServiceLocatorUtilities.addClasses(ServiceLocatorUtilities.java:435)
at org.glassfish.hk2.utilities.ServiceLocatorUtilities.enableLookupExceptions(ServiceLocatorUtilities.java:876)
at weblogic.server.GlobalServiceLocator.getServiceLocator(GlobalServiceLocator.java:186)
... 30 more

15:46:30,089 INFO  [org.jboss.resource.adapter.jms.inflow.JmsActivation] (default-threads - 1) Attempting to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@3120f6fe(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@54239517 destination=inboundQueue destinationType=javax.jms.Queue acknowledgeMode=Auto-acknowledge subscriptionDurability=false reconnectInterval=10 reconnectAttempts=-1 user=weblogic password=<not shown> maxMessages=1 minSession=1 maxSession=15 connectionFactory=inboundConnectionFactory jndiParameters={java.naming.provider.url=t3://10.182.243.250:7001, java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory, java.naming.security.principal=weblogic, java.naming.security.credentials=<not shown>})
15:46:30,090 ERROR [org.jboss.resource.adapter.jms.inflow.JmsActivation] (default-threads - 1) Unable to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@3120f6fe(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@54239517 destination=inboundQueue destinationType=javax.jms.Queue acknowledgeMode=Auto-acknowledge subscriptionDurability=false reconnectInterval=10 reconnectAttempts=-1 user=weblogic password=<not shown> maxMessages=1 minSession=1 maxSession=15 connectionFactory=inboundConnectionFactory jndiParameters={java.naming.provider.url=t3://10.182.243.250:7001, java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory, java.naming.security.principal=weblogic, java.naming.security.credentials=<not shown>}): java.lang.NoClassDefFoundError: Could not initialize class weblogic.utils.LocatorUtilities$Locator
at weblogic.utils.LocatorUtilities.getService(LocatorUtilities.java:30)
at weblogic.security.acl.internal.RemoteAuthenticate.authenticate(RemoteAuthenticate.java:56)
at weblogic.jndi.WLInitialContextFactoryDelegate.authenticateRemotely(WLInitialContextFactoryDelegate.java:927)
at weblogic.jndi.WLInitialContextFactoryDelegate.pushSubject(WLInitialContextFactoryDelegate.java:857)
at weblogic.jndi.WLInitialContextFactoryDelegate.newContext(WLInitialContextFactoryDelegate.java:609)
at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:418)
at weblogic.jndi.Environment.getContext(Environment.java:351)
at weblogic.jndi.Environment.getContext(Environment.java:320)
at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:119)
at org.jboss.as.naming.InitialContext.getDefaultInitCtx(InitialContext.java:114)
at org.jboss.as.naming.InitialContext.init(InitialContext.java:99)
at javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)
at org.jboss.as.naming.InitialContext.<init>(InitialContext.java:89)
at org.jboss.as.naming.InitialContextFactory.getInitialContext(InitialContextFactory.java:43)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.init(InitialContext.java:244)
at javax.naming.InitialContext.<init>(InitialContext.java:216)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.convertStringToContext(JmsActivation.java:332)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupActivation(JmsActivation.java:309)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.handleFailure(JmsActivation.java:258)
at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:545)
at org.jboss.jca.core.workmanager.WorkWrapper.run(WorkWrapper.java:226)
at org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33)
at org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:808)
at org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45)
at org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:828)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)


the link I refered:

the module.xml below genericjms:

<module xmlns="urn:jboss:module:1.3" name="org.jboss.genericjms">
    <resources>
        <resource-root path="."/>
        <resource-root path="generic-jms-ra-jar-2.0.1.Final.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api" slot="main"/>
        <module name="javax.jms.api" slot="main"/>
        <module name="javax.resource.api" slot="main"/>
        <module name="org.jboss.logging" slot="main"/>
      <module name="org.jboss.genericjms.provider" export="true" services="import">
      </module>
  
    </dependencies>
</module>

the module.xml below provider:

<?xml version='1.0' encoding='UTF-8'?>  
<module xmlns="urn:jboss:module:1.3" name="org.jboss.genericjms.provider">  
    <resources>
        <resource-root path="wlthint3client.jar"/>
    </resources>

    <dependencies>
    <module name="javax.api" />
    <module name="org.omg.api" />
    <module name="sun.jdk" />
    <module name="javax.rmi.api" />
    </dependencies>
</module>

standalone-full.xml :
        <subsystem xmlns="urn:jboss:domain:resource-adapters:3.0">
            <resource-adapters>
                <resource-adapter id="org.jboss.genericjms">
                    <module slot="main" id="org.jboss.genericjms"/>
                    <transaction-support>NoTransaction</transaction-support>
                    <connection-definitions>
                        <connection-definition class-name="org.jboss.resource.adapter.jms.JmsManagedConnectionFactory" jndi-name="outboundConnectionFactory" use-java-context="true" pool-name="outboundConnectionFactory" use-ccm="true">
                            <config-property name="ConnectionFactory">
                                outboundConnectionFactory
                            </config-property>
                            <config-property name="JndiParameters">
                                java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory;java.naming.provider.url=t3://10.182.243.250:7001;java.naming.security.principal=weblogic;java.naming.security.credentials=Welcome1
                            </config-property>
                            <security>
                                <application/>
                            </security>
                        </connection-definition>
                    </connection-definitions>
                </resource-adapter>
            </resource-adapters>
        </subsystem>

MDB:

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

@MessageDriven(activationConfig = {
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
    ,
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "inboundQueue")
    ,
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge")
    ,
        @ActivationConfigProperty(propertyName = "connectionFactory", propertyValue = "inboundConnectionFactory")
    ,
        @ActivationConfigProperty(propertyName = "jndiParameters", propertyValue = "java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory;java.naming.provider.url=t3://10.182.243.250:7001;java.naming.security.principal=weblogic;java.naming.security.credentials=Welcome1")
    ,
        @ActivationConfigProperty(propertyName = "user", propertyValue = "weblogic")
    ,
        @ActivationConfigProperty(propertyName = "password", propertyValue = "Welcome1")

})
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class NewMessageBean implements MessageListener {

    public NewMessageBean() {
    }

    @Override
    public void onMessage(Message message) {


Shengjun

Justin Bertram

unread,
Oct 31, 2017, 9:12:54 AM10/31/17
to Generic JMS JCA Resource Adapter for JBoss AS
It looks to me like the root of the problem is this error:

java.lang.NoClassDefFoundError: Could not initialize class weblogic.utils.LocatorUtilities$Locator

This indicates to me that you don't have all the right jars defined in your "org.jboss.genericjms.provider" module.

zhushe...@gmail.com

unread,
Nov 7, 2017, 9:49:46 PM11/7/17
to Generic JMS JCA Resource Adapter for JBoss AS
Thanks for your reply. 

The class was included in the jar file, however, it failed to initialize. I decompiled the class file, I found the NPE was that "dcs" was null.
I don't know why.

DynamicConfigurationService dcs = (DynamicConfigurationService) locator
.getService(DynamicConfigurationService.class, new Annotation[0]);
System.out.println("ServiceLocatorUtilities addClasses 2============================================================");
System.out.println(dcs);

Justin Bertram

unread,
Nov 8, 2017, 4:11:47 PM11/8/17
to Generic JMS JCA Resource Adapter for JBoss AS
The resource adapter is using the standard Java JNDI interfaces to integrate with the JMS provider.  The problem here seems to be in the implementation which the resource adapter can't do anything about.  You'll need to consult whoever supports the code that's throwing the exception.
Reply all
Reply to author
Forward
0 new messages