Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problem in MDB listening to External JMS Provider

35 views
Skip to first unread message

balaji.n...@hotmail.com

unread,
Jun 4, 2009, 10:38:28 AM6/4/09
to
Hi all,
I have an MDB deployed in WAS Server1 listening to a Topic in Server2 (WAS). Following are the steps i followed.
1. Created a JMS provider with initial context factory (com.ibm.websphere.naming.WsnInitialContextFactory)and external provider url(iiop://hostname:2809).
2. Created a Topic connection factory (jms/SampleProxyTopicCF) and topic destination (jms/SampleProxyTopic)on top of this new JMS provider (with corresponding external JNDI names(jms/SampleTopicCF,jms/SampleTopic)).
3. From a Java program, i subscribed to this newly created Topic CF (jms/SampleProxyTopicCF)and Topic(jms/SampleProxyTopic) and i could recieve messages
4. Now, Created a Listener Port (SampleListener) with this Topic Info (jms/SampleProxyTopicCF,jms/SampleProxyTopic)
5. Created an MDB and configured it with the listener port (SampleListener)
6. Deployed MDB but received following exception. After several retries, the listener stops.


6/4/09 20:06:43:933 IST] 00000061 MDBListenerIm W WMSG0019E: Unable to start MDB Listener SampleTopicMDB, JMSDestination jms/SampleExternalTopic : javax.jms.IllegalStateException: CWSIA0025E: The method setExceptionListener is not permitted in this container.
at com.ibm.ws.sib.api.jms.impl.JmsConnectionImpl.setExceptionListener(JmsConnectionImpl.java:530)
at com.ibm.ejs.jms.JMSManagedConnection. (JMSManagedConnection.java:324)
at com.ibm.ejs.jms.JMSManagedTopicConnection.(JMSManagedTopicConnection.java:73)
at com.ibm.ejs.jms.GenericJMSManagedTopicConnectionFactory.createManagedConnection(GenericJMSManagedTopicConnectionFactory.java:91)
at com.ibm.ejs.jms.JMSManagedConnectionFactory.createManagedConnection(JMSManagedConnectionFactory.java:627)
at com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1895)
at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1570)
at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2338)
at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:910)
at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:600)
at com.ibm.ejs.jms.JMSTopicConnectionFactoryHandle.createTopicConnection(JMSTopicConnectionFactoryHandle.java:84)
at com.ibm.ejs.jms.listener.MDBListenerImpl.createResources(MDBListenerImpl.java:424)
at com.ibm.ejs.jms.listener.MDBListenerImpl.internalStart(MDBListenerImpl.java:728)
at com.ibm.ejs.jms.listener.MDBListenerImpl.start(MDBListenerImpl.java:651)
at com.ibm.ejs.jms.listener.MDBListenerManagerImpl.start(MDBListenerManagerImpl.java:634)
at com.ibm.ejs.jms.listener.MsgListenerPort.start(MsgListenerPort.java:312)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:62)
at sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:265)
at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1092)
at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:973)
at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:231)
at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:238)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:833)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802)
at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1082)
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
at com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:975)
at com.ibm.ws.console.servermanagement.messagelistener.ListenerPortCollectionAction.execute(ListenerPortCollectionAction.java:320)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1486)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:528)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1096)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1037)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:566)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:321)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1070)
at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:273)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:319)
at com.ibm.isclite.container.controller.InformationController.processForwardConfig(InformationController.java:206)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1486)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:528)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1096)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1037)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
at com.ibm.ws.console.core.servlet.WSCUrlFilter.setUpCommandAssistence(WSCUrlFilter.java:792)
at com.ibm.ws.console.core.servlet.WSCUrlFilter.continueStoringTaskState(WSCUrlFilter.java:363)
at com.ibm.ws.console.core.servlet.WSCUrlFilter.doFilter(WSCUrlFilter.java:229)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:566)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3444)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)

[6/4/09 20:06:43:965 IST] 00000061 MDBListenerIm I WMSG0043I: MDB Listener SampleExternalListener stopped for JMSDestination jms/SampleExternalTopic
[6/4/09 20:06:43:965 IST] 00000061 MDBListenerIm I WMSG0058I: Listener Port SampleExternalListener will attempt to restart in 60 seconds
[6/4/09 20:06:43:980 IST] 00000061 ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl open FFDC0009I: FFDC opened incident stream file D:\Program Files\IBM\WID62\pf\wps\logs\ffdc\server1_00000061_09.06.04_20.06.43_4.txt
[6/4/09 20:06:43:996 IST] 00000061 ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC closed incident stream file D:\Program Files\IBM\WID62\pf\wps\logs\ffdc\server1_00000061_09.06.04_20.06.43_4.txt
[6/4/09 20:06:43:996 IST] 00000061 MsgListenerPo W WMSG0049E: Failed to start MDB SampleTopicMDB against listener port SampleExternalListener
[6/4/09 20:06:45:527 IST] 00000062 ServletWrappe I SRVE0242I: [isclite] [/ibm/console] [/secure/javascriptToSession.jsp]: Initialization successful.

Please help me.

LEMI...@uk.ibm.com

unread,
Jun 4, 2009, 11:53:50 AM6/4/09
to
Hi.

You shouldn't be using listener ports with the default messaging provider, use activation specs instead. Depending on your version of WAS there are limitations on exactly where your activation spec can be related to your SIBus.

Cheers, Matt.

balaji.n...@hotmail.com

unread,
Jun 5, 2009, 1:41:53 AM6/5/09
to
Thanks Matt for your timely response. Actually i am creating a JMS Provider (with Initial Context Factory and Provider URL of another WAS) and there is no option to create Activation Spec for this new JMS Provider. I can only create Activation Spec for default messaging provider.

Thanks and Regards,
Balaji N

balaji.n...@hotmail.com

unread,
Jun 5, 2009, 2:17:23 AM6/5/09
to
Can anyone let me know please, the steps that has to be followed to set up an MDB (deployed in one WAS) listening to a Topic created in default messaging provider of another was?

LEMI...@uk.ibm.com

unread,
Jun 5, 2009, 4:04:19 AM6/5/09
to
Hi.

If you are using WAS version 7 you can create an activation spec for a 'remote' instance of the default messaging provider. For 6.0 and 6.1 you will need this APAR applied first: http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg1PK77768.

One this is done you create an default messaging provider activation spec in the server on which your MDB is installed and set the provider endpoint property to point to the app server hosting your messaging engine. Then it should work. You shouldn't need to create a generic messaging provider in the way you are currently.

Cheers, Matt.

balaji.n...@hotmail.com

unread,
Jun 5, 2009, 6:28:43 AM6/5/09
to
Thanks a lot Matt. I will try that out.

balaji.n...@hotmail.com

unread,
Jun 5, 2009, 6:50:06 AM6/5/09
to
The release date of fix pack is pushed to 22 Jun 2009, which is 2 weeks from now. Till that, can i accomplish this scenario through foreign bus with SIB link?

balaji.n...@hotmail.com

unread,
Jun 5, 2009, 1:33:46 PM6/5/09
to
I am very much happy to tell that the foreign bus worked. :)
MDB deployed in one server could listen to messages from another server.

Following are the brief steps I did.

1. MDB is deployed in Server A (MDB Server)
2. Topic and Topic CF are created in Server B (Message Server)
3. Created a foreign Bus in MDB Server and linked it to the SIB in Message Server
4. Created a foreign Bus in Message Server and linked it back to SIB in MDB Server
5. Created a Topic, Topic AS in MDB Server – These act as proxies
6. Mapped the Topic Space in the created link (So that the topic created in MDB Server and Message Server can exchange messages)
7. Configured MDB to Activation Spec and Topic in MDB Server.
8. Pushed a message in Message Server and the MDB deployed in MDB Server could receive it.

This is through InboundBasicMessaging and BootstrapBasicMessaging. I am now working to add security to the entire setup. I know these steps are very brief, i will blog the entire details and update the link here ASAP.

Thanks a lot Matt for your help.

0 new messages