dev@glassfish.java.net

RE: Non-JMS MDB needs JMS?

From: Frank Kieviet <Frank.Kieviet_at_Sun.COM>
Date: Sat, 26 Jan 2008 13:38:59 -0800

Markus,

You need to use a Glassfish specific deployment descriptor (sun-ejb-jar.xml)
that will tell Glassfish to which resource adapter to bind your MDB. The
parameter is called MID and is equal to the name of the resource adapter as
it shows up in the glassfish console.

Frank

> -----Original Message-----
> From: dev-return-5371-frank.kieviet=sun.com_at_glassfish.dev.java.net
> [mailto:dev-return-5371-frank.kieviet=sun.com_at_glassfish.dev.java.net] On
> Behalf Of Markus KARG
> Sent: Saturday, January 26, 2008 05:21
> To: dev_at_glassfish.dev.java.net
> Subject: Non-JMS MDB needs JMS?
>
> I have installed the Java EE 5 SDK and started the contained Glassfish
> server.
> Then, I wrote a Resource Adapter that implements a properietary
> messaging interface.
> Then, I wrote an empty MDB that shall listened not to JMS but to the
> RA's proprietary messaging interface.
>
> When I run GF's veryfier, it does not find any problems. :-)
> When I deploy the RA, GF boots it up without any problems. :-)
> When I deploy the MDB, GF says it deployed it, but cannot instantiate it
> since there is no JMS?! :-(
>
> For what do I need JMS? I do not want to use it and the code clearly
> tells GF that no JMS is needed:
>
> @MessageDriven
> public class XMessageDrivenBean implements XMessagelListener {
> public void onX(final X x) {
> // Do nothing for now.
> }
> }
>
> (The RA is providing exactly that XMessageListener, and declares it in
> ra.xml)
>
> Here is the log entry GF posts at deployment:
>
> UnExpected error occured while creating ejb container
> com.sun.enterprise.connectors.ConnectorRuntimeException: JMS resource
> not created : at
> com.sun.enterprise.connectors.system.ActiveJmsResourceAdapter.getPhysicalD
> estinationFromConfiguration(ActiveJmsResourceAdapter.java:1546)
> at
> com.sun.enterprise.connectors.system.ActiveJmsResourceAdapter.updateMDBRun
> timeInfo(ActiveJmsResourceAdapter.java:1380)
> at
> com.sun.enterprise.connectors.inflow.ConnectorMessageBeanClient.setup(Conn
> ectorMessageBeanClient.java:170)
> at
> com.sun.ejb.containers.MessageBeanContainer.<init>(MessageBeanContainer.ja
> va:209)
> at
> com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFacto
> ryImpl.java:524)
> at
> com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:536)
> at
> com.sun.enterprise.server.EJBModuleLoader.doLoad(EJBModuleLoader.java:171)
> at
> com.sun.enterprise.server.AbstractLoader.load(AbstractLoader.java:244)
> at
> com.sun.enterprise.server.StandAloneEJBModulesManager.moduleDeployed(Stand
> AloneEJBModulesManager.java:232)
> at
> com.sun.enterprise.server.StandAloneEJBModulesManager.moduleDeployed(Stand
> AloneEJBModulesManager.java:187)
> at
> com.sun.enterprise.server.StandAloneEJBModulesManager.moduleDeployed(Stand
> AloneEJBModulesManager.java:419)
> at
> com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEve
> ntListener(AdminEventMulticaster.java:974)
> at
> com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEve
> nt(AdminEventMulticaster.java:961)
> at
> com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEve
> ntMulticaster.java:464)
> at
> com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminE
> ventMulticaster.java:176)
> at
> com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicas
> tEvent(DeploymentNotificationHelper.java:308)
> at
> com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEven
> t(DeploymentServiceUtils.java:226)
> at
> com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEven
> t(ServerDeploymentTarget.java:298)
> at
> com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(Appli
> cationStartPhase.java:132)
> at
> com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(Deploym
> entPhase.java:108)
> at
> com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PE
> DeploymentService.java:919)
> at
> com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeployme
> ntService.java:591)
> at
> com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeployme
> ntService.java:635)
> at
> com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(Applications
> ConfigMBean.java:744)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> 39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
> pl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597) at
> com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.jav
> a:375)
> at
> com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.jav
> a:358)
> at
> com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.jav
> a:464)
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanS
> erverInterceptor.java:836)
> at
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
> at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source) at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
> pl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597) at
> com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90)
> at $Proxy1.invoke(Unknown Source) at
> com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneIn
> terceptor.java:304)
> at
> com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicIntercepto
> r.java:174)
> at
> com.sun.enterprise.deployment.client.DeploymentClientUtils.startApplicatio
> n(DeploymentClientUtils.java:145)
> at
> com.sun.enterprise.deployment.client.DeployAction.run(DeployAction.java:53
> 7)
> at java.lang.Thread.run(Thread.java:619)
>
>
> So is that a bug or why do I need to set up JMS?
>
>
> Thanks
> Markus
>
> --
> http://www.xing.com/go/invita/58469