-
1. Re: Strange MDB behavior inside an EAR
jaikiran Oct 18, 2005 11:13 AM (in response to kcounsell)"kcounsell" wrote:
For what it's worth, the Queue lives on another JBoss installation.
Do you mean, the MDB is listening to a remote-queue? If so how have your configured your MDB? Please post your jboss.xml contents -
2. Re: Strange MDB behavior inside an EAR
kcounsell Oct 18, 2005 11:26 AM (in response to kcounsell)"jaikiran" wrote:
Do you mean, the MDB is listening to a remote-queue? If so how have your configured your MDB? Please post your jboss.xml contents
Yes, sorry. My jboss.xml is:<?xml version="1.0"?> <jboss> <enterprise-beans> <message-driven> <ejb-name>FormConsumer</ejb-name> <destination-jndi-name>queue/ProvidentDemoQueue</destination-jndi-name> <resource-ref> <res-ref-name>jms/ConnectionFactory</res-ref-name> <jndi-name>ConnectionFactory</jndi-name> </resource-ref> <!-- Remote connection to the queue. --> <invoker-bindings> <invoker> <invoker-proxy-binding-name>my-outside-mdb-invoker</invoker-proxy-binding-name> </invoker> </invoker-bindings> </message-driven> </enterprise-beans> </jboss>
I have the corresponding invoker-proxy-binding element in server/default/conf/standardjboss.xml and provided an mbean for the queue in server/default/deploy/jms/remote-jms-ds.xml. Would it be useful to post those as well? -
3. Re: Strange MDB behavior inside an EAR
kcounsell Oct 18, 2005 11:28 AM (in response to kcounsell)Thanks also for such a quick reply, jaikiran!
-
4. Re: Strange MDB behavior inside an EAR
jaikiran Oct 18, 2005 11:35 AM (in response to kcounsell)I think you will have to change the jms-ds.xml file under the server/default/deploy/jms directory to contain something like the following:
<!--Jaikiran --> <!--Adding my own JMS provider. This will be used to setup a 'destination'(queue/topic) on a remote m/c--> <mbean code="org.jboss.jms.jndi.JMSProviderLoader" name="jboss.mq:service=JMSProviderLoader,name=RemoteMQProvider,server=ps2177"> <!--this name will be used in jboss.xml--> <attribute name="ProviderName">JaikiranJMSProvider</attribute> <!--Points to remote server--> <attribute name="ProviderUrl">jnp://ps2177:1099</attribute> <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JBossMQProvider</attribute> <attribute name="QueueFactoryRef">UIL2XAConnectionFactory</attribute> <attribute name="TopicFactoryRef">UIL2XAConnectionFactory</attribute> </mbean> <!--Jaikiran ends-->
Please post the other config files as well -
5. Re: Strange MDB behavior inside an EAR
jaikiran Oct 18, 2005 11:40 AM (in response to kcounsell)This link might help you:
http://www.jboss.org/wiki/Wiki.jsp?page=HowDoIConfigureAnMDBToTalkToARemoteQueue -
6. Re: Strange MDB behavior inside an EAR
kcounsell Oct 18, 2005 12:04 PM (in response to kcounsell)My remote-jms-ds.xml in the deploy/jms directory is very similar to what you suggest adding to jms-ds.xml, though I used the improved ProviderAdapterClass mentioned on the Wiki page.
<?xml version="1.0" encoding="UTF-8"?> <!-- Provides a link to the remote JNDI service provider. --> <server> <mbean code="org.jboss.jms.jndi.JMSProviderLoader" name="jboss.mq:service=JMSProviderLoader,name=RemoteJMSProvider,server=localhost"> <!-- ProviderName specifies the default JNDI lookup name. --> <attribute name="ProviderName">MyOutsideJMSProvider</attribute> <attribute name="ProviderAdapterClass"> org.jboss.jms.jndi.JNDIProviderAdapter </attribute> <attribute name="FactoryRef">java:/XAConnectionFactory</attribute> <attribute name="QueueFactoryRef">java:/XAConnectionFactory</attribute> <attribute name="TopicFactoryRef">java:/XAConnectionFactory</attribute> <attribute name="Properties"> java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jnp.interfaces java.naming.provider.url=localhost:1099 </attribute> </mbean> </server>
The snippet that I added to standardjboss.xml is:<invoker-proxy-binding> <name>my-outside-mdb-invoker</name> <invoker-mbean>does-not-matter</invoker-mbean> <proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-factory> <proxy-factory-config> <JMSProviderAdapterJNDI>MyOutsideJMSProvider</JMSProviderAdapterJNDI> <ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJNDI> <MinimumSize>1</MinimumSize> <KeepAliveMillis>30000</KeepAliveMillis> <MaximumSize>15</MaximumSize> <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>
The Wiki page is useful, and I actually followed it to get up and running initially. The strange part (to me, at least) is that this works as long as the MDB is deployed by itself, but not when it is in an EAR.
Thanks again,
Keith -
7. Re: Strange MDB behavior inside an EAR
kcounsell Oct 18, 2005 2:16 PM (in response to kcounsell)I evidently had something wrong in the EAR for half of the day.
When I deployed a fully exploded version on 4.0.2 it worked as expected, and when I deployed an archived version on 4.0.3 it worked, too. For the sake of completeness I deployed the archive on 4.0.2 again, and it now works, too.
Now if only I can figure out what I did wrong the first time through...