Problem integrating Weblogic 8.1 JMS with Jboss 5.1
rajsoni Feb 24, 2010 4:45 PMHello Everyone,
Am trying to set up Weblogic8.1 as the JMS provider for Jboss 5.1.
Based on my findings and understanding of the changes needed to achieve this,I'have made the following changes :
jms-ds.xml:
<mbean code="org.jboss.jms.jndi.JMSProviderLoader"
name="jboss.mq:service=JMSProviderLoader,name=WLJMSProvider">
<attribute name="ProviderName">WLJMSProvider</attribute>
<attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
<attribute name="QueueFactoryRef">weblogicjms</attribute>
<attribute name="TopicFactoryRef">weblogicjms</attribute>
</mbean>
<no-tx-connection-factory>
<jndi-name>WLJMS</jndi-name>
<rar-name>jms-ra.rar</rar-name>
<connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
<config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Queue</config-property>
<config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/WLJMSProvider</config-property>
<max-pool-size>20</max-pool-size>
</no-tx-connection-factory>
jboss-service.xml:
<mbean code="org.jboss.naming.ExternalContext"
name="DefaultDomain:service=ExternalContext,jndiName=weblogicjms">
<attribute name="JndiName">weblogicjms</attribute>
<attribute name="Properties">
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://remotehost:7001
java.naming.security.authentication=none
</attribute>
<attribute name="InitialContext">javax.naming.InitialContext</attribute>
</mbean>
Also added the weblogic.jar in the default/server/lib folder in Jboss.When I start Jboss after making these changes I see that the Jboss server is able to bind to the queue on remote server.
However,for the MDB,which is deployed on the Jboss server I see the following error while activation:
16:32:41,661 INFO [JmsActivation] Attempting to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@7fd7c1(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@dee999 destination=java:WLJMS/QUEUE.MARKET destinationType=javax.jms.Queue tx=true durable=false reconnect=10 provider=java:/DefaultJMSProvider user=null maxMessages=1 minSession=1 maxSession=15 keepAlive=60000 useDLQ=true DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5)
16:32:41,662 ERROR [JmsActivation] Unable to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@7fd7c1(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@dee999 destination=java:WLJMS/QUEUE.MARKET destinationType=javax.jms.Queue tx=true durable=false reconnect=10 provider=java:/DefaultJMSProvider user=null maxMessages=1 minSession=1 maxSession=15 keepAlive=60000 useDLQ=true DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5)
javax.naming.NameNotFoundException: DefaultJMSProvider not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
at org.jnp.server.NamingServer.getObject(NamingServer.java:785)
at org.jnp.server.NamingServer.lookup(NamingServer.java:443)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:726)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
at javax.naming.InitialContext.lookup(InitialContext.java:409)
at org.jboss.util.naming.Util.lookup(Util.java:222)
at org.jboss.util.naming.Util.lookup(Util.java:182)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupJMSProviderAdapter(JmsActivation.java:397)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.setup(JmsActivation.java:346)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.handleFailure(JmsActivation.java:292)
at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:733)
at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
Here's how the jboss.xml looks like for the MDB causing the problem while activation:
*********************************************************************************************************************************************************
<?xml version="1.0"?>
<!DOCTYPE jboss PUBLIC
"-//JBoss//DTD JBOSS 5.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss_5_0.dtd">
<jboss>
<enterprise-beans>
<message-driven>
<ejb-name>ProcessMDB</ejb-name>
<destination-jndi-name>java:WLJMS/QUEUE.MARKET</destination-jndi-name>
<local-jndi-name>local/ProcessMDB</local-jndi-name>
<configuration-name>WeblogicRemoteMessageDrivenBean</configuration-name>
</message-driven>
</enterprise-beans>
<invoker-proxy-bindings>
<invoker-proxy-binding>
<name>wl-mdb-invoker</name>
<invoker-mbean>default</invoker-mbean>
<proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-factory>
<proxy-factory-config>
<JMSProviderAdapterJNDI>java:/WLJMS</JMSProviderAdapterJNDI>
<ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJNDI>
<CreateJBossMQDestination>false</CreateJBossMQDestination>
<!-- WARN: Don't set this to zero until a bug in the pooled executor is fixed -->
<MinimumSize>1</MinimumSize>
<MaximumSize>15</MaximumSize>
<KeepAliveMillis>30000</KeepAliveMillis>
<MaxMessages>1</MaxMessages>
<MDBConfig>
<ReconnectIntervalSec>10</ReconnectIntervalSec>
<DLQConfig>
<DestinationQueue>queue/DLQ</DestinationQueue>
<MaxTimesRedelivered>10</MaxTimesRedelivered>
<TimeToLive>0</TimeToLive>
</DLQConfig>
</MDBConfig>
</proxy-factory-config>
</invoker-proxy-binding>
</invoker-proxy-bindings>
<container-configurations>
<container-configuration>
<container-name>WeblogicRemoteMessageDrivenBean</container-name>
<call-logging>false</call-logging>
<invoker-proxy-binding-name>wl-mdb-invoker</invoker-proxy-binding-name>
<container-interceptors>
<interceptor>org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor</interceptor>
<interceptor>org.jboss.ejb.plugins.LogInterceptor</interceptor>
<interceptor>org.jboss.ejb.plugins.RunAsSecurityInterceptor</interceptor>
<!-- CMT -->
<interceptor>org.jboss.ejb.plugins.TxInterceptorCMT</interceptor>
<interceptor>org.jboss.ejb.plugins.CallValidationInterceptor</interceptor>
<interceptor>org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor</interceptor>
<!-- BMT -->
<interceptor>org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor</interceptor>
<interceptor>org.jboss.ejb.plugins.MessageDrivenTxInterceptorBM</interceptor>
<interceptor>org.jboss.ejb.plugins.CallValidationInerceptor</interceptor>
<interceptor>org.jboss.resource.connectionmanager.CachedConnectionInterceptor</interceptor>
</container-interceptors>
<instance-pool>org.jboss.ejb.plugins.MessageDrivenInstancePool</instance-pool>
<instance-cache></instance-cache>
<persistence-manager></persistence-manager>
<container-pool-conf>
<MaximumSize>100</MaximumSize>
</container-pool-conf>
</container-configuration>
</container-configurations>
Am not sure why it's trying to bind to the Default JMSprovider still instead of the WLJMSProvider that I have set up for this...
Have tried other options as well like making the changes for invokder binding in the standard-jboss.xml as well but havent found
the solution yet...
Can anyone help me with this issue?
thanks for your help in advance!!!