-
1. Re: Injection of QueueConnectionFactory and Queue from ENC i
jaikiran Jan 27, 2009 1:50 AM (in response to wolfgangknauf)Could you please post the entire exception stacktrace?
-
2. Re: Injection of QueueConnectionFactory and Queue from ENC i
wolfgangknauf Jan 27, 2009 2:28 PM (in response to wolfgangknauf)Sure (it is the log4j output of the ClientLauncher).
I change the Queue annotation to point to the ENC name:@Resource(mappedName="jms/MBQueueRef") private static Queue queue;
This results in this Log4J output when starting the client:2009-01-27 20:23:28,890 INFO [main][org.jboss.ejb3.client.ClientLauncher] - <ClientLauncher, version: $Revision: 81053 $> 2009-01-27 20:23:28,937 DEBUG [main][org.jboss.kernel.KernelFactory] - <Starting JBoss Kernel construction...> 2009-01-27 20:23:29,125 DEBUG [main][org.jboss.kernel.KernelFactory] - <Completed JBoss Kernel construction. Duration: 188 milliseconds> 2009-01-27 20:23:29,234 INFO [main][org.jboss.ejb3.client.ClientLauncher] - <Setting up classpath from: > 2009-01-27 20:23:29,234 INFO [main][org.jboss.ejb3.client.ClientLauncher] - <vfszip:/C:/temp/jboss-5.0.0.GA/server/default/tmp/jsr88/Message.ear/MessageClient.jar> 2009-01-27 20:23:29,234 INFO [main][org.jboss.ejb3.client.ClientLauncher] - <End classpath> 2009-01-27 20:23:29,265 DEBUG [main][org.jboss.ejb3.client.ClientLauncher] - <Deploying AbstractKernelDeployment@5e5a50{name=ClientLauncherClassPath:0.0.0 installed=false beanFactories=[AbstractBeanMetaData@7b6889{name=ClassLoaderSystem bean=org.jboss.classloader.spi.ClassLoaderSystem properties= constructor=AbstractConstructorMetaData@c2ff5{parameters= factoryClass=org.jboss.ejb3.client.ClientLauncher factoryMethod=getClassLoaderSystem} autowireCandidate=true}, AbstractBeanMetaData@20be79{name=ClassLoading bean=org.jboss.classloading.spi.dependency.ClassLoading properties= constructor=null autowireCandidate=true installCallbacks=[method=addModule] uninstallCallbacks=[method=removeModule]}, VFSClassLoaderFactory@1b9240e{name=ClientLauncherClassPath version=0.0.0 parent-first=true}, AbstractBeanMetaData@1ee4648{name=ClientContainer bean=org.jboss.ejb3.client.ClientContainer properties= classLoader=AbstractClassLoaderMetaData@482923{classloader=AbstractDependencyValueMetaData@184ec44{value=ClientLauncherClassPath:0.0.0}} constructor=AbstractConstructorMetaData@1b383e9{parameters=[org.jboss.metadata.client.jboss.JBossClientMetaData, java.lang.Class, java.lang.String, java.util.Properties]} autowireCandidate=true}]}> 2009-01-27 20:23:29,671 DEBUG [main][org.jboss.classloader.spi.ClassLoaderSystem] - <DefaultClassLoaderSystem@e5bbd6 registered domain=ClassLoaderDomain@8ee016{name=DefaultDomain parentPolicy=BEFORE parent=sun.misc.Launcher$AppClassLoader@11b86e7}> 2009-01-27 20:23:29,828 DEBUG [main][org.jboss.classloading.spi.dependency.Domain] - <org.jboss.classloading.spi.dependency.Domain@9b42e6{DefaultDomain} add module VFSClassLoaderPolicyModule ClientLauncherClassPath:0.0.0> 2009-01-27 20:23:29,843 INFO [main][org.jboss.virtual.spi.cache.VFSCacheFactory] - <Using VFSCache [NoopVFSCache]> 2009-01-27 20:23:29,859 INFO [main][org.jboss.virtual.plugins.copy.CopyMechanism] - <VFS temp dir: C:\DOCUME~1\Knuffi\LOCALS~1\Temp> 2009-01-27 20:23:29,890 DEBUG [main][org.jboss.classloader.spi.base.BaseClassLoader] - <Created BaseClassLoader@192c8d9{ClientLauncherClassPath:0.0.0$MODULE} with policy VFSClassLoaderPolicy@1c05ffd{name=ClientLauncherClassPath:0.0.0$MODULE domain=null roots=[ZipEntryHandler@14556042[path= context=vfszip:/C:/temp/jboss-5.0.0.GA/server/default/tmp/jsr88/Message.ear/MessageClient.jar real=vfszip:/C:/temp/jboss-5.0.0.GA/server/default/tmp/jsr88/Message.ear/MessageClient.jar]] delegates=null exported=[]}> 2009-01-27 20:23:29,890 DEBUG [main][org.jboss.classloader.spi.base.BaseClassLoaderDomain] - <ClassLoaderDomain@8ee016{DefaultDomain} registerClassLoader BaseClassLoader@192c8d9{ClientLauncherClassPath:0.0.0$MODULE}> 2009-01-27 20:23:30,031 INFO [main][org.jboss.ejb3.client.JndiDependencyItem] - <Resolved(MessageClient/metaData)org.jboss.metadata.client.jboss.JBossClientMetaData@cae5b5d1> 2009-01-27 20:23:30,062 INFO [main][org.jboss.ejb3.client.ClientContainer] - <ClientContainer(version=$Revision: 81053 $)> 2009-01-27 20:23:30,062 INFO [main][org.jboss.ejb3.client.ClientContainer] - <DependencyPolicy.CS: (file:/C:/temp/jboss-5.0.0.GA/client/jboss-ejb3-core-client.jar <no signer certificates>)> 2009-01-27 20:23:30,062 INFO [main][org.jboss.ejb3.client.ClientContainer] - <ClientContainer.CS: (file:/C:/temp/jboss-5.0.0.GA/client/jboss-appclient.jar <no signer certificates>)> 2009-01-27 20:23:30,062 INFO [main][org.jboss.ejb3.client.ClientContainer] - <mainClass.ClassLoader: BaseClassLoader@192c8d9{ClientLauncherClassPath:0.0.0$MODULE}> 2009-01-27 20:23:30,062 INFO [main][org.jboss.ejb3.client.ClientContainer] - <mainClassLoader jndi.properties: null> 2009-01-27 20:23:30,125 INFO [main][org.jboss.ejb3.client.ClientContainer] - <Client ENC(MessageClient): +- UserTransaction[link -> UserTransaction] (class: javax.naming.LinkRef) +- metaData (class: org.jboss.metadata.client.jboss.JBossClientMetaData) +- env (class: org.jnp.interfaces.NamingContext) | +- de.fhw.komponentenarchitekturen.knauf.mdb.MessageFrame (class: org.jnp.interfaces.NamingContext) | | +- queue[link -> jms/MBQueueRef] (class: javax.naming.LinkRef) | +- jms (class: org.jnp.interfaces.NamingContext) | | +- MBConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef) | | +- MBQueueRef[link -> queue/MessageBeanQueue] (class: javax.naming.LinkRef) +- classPathEntries (class: java.util.ArrayList) > 2009-01-27 20:23:30,125 DEBUG [main][org.jboss.ejb3.client.ClientContainer] - <processMetadata> 2009-01-27 20:23:30,171 DEBUG [main][org.jboss.ejb3.client.ClientContainer] - <injector: org.jboss.ejb3.client.JndiPropertyInjector@ba4211> 2009-01-27 20:23:30,203 ERROR [main][org.jboss.kernel.plugins.dependency.AbstractKernelController] - <Error installing to Instantiated: name=ClientContainer state=Described> java.lang.RuntimeException: Unable to inject jndi dependency: env/de.fhw.komponentenarchitekturen.knauf.mdb.MessageFrame/queue into property de.fhw.komponentenarchitekturen.knauf.mdb.MessageFrame.queue: jms not bound at org.jboss.ejb3.client.JndiPropertyInjector.lookup(JndiPropertyInjector.java:136) at org.jboss.ejb3.client.JndiPropertyInjector.inject(JndiPropertyInjector.java:78) at org.jboss.ejb3.client.ClientContainer.<init>(ClientContainer.java:130) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.jboss.reflect.plugins.introspection.ReflectionUtils.newInstance(ReflectionUtils.java:149) at org.jboss.reflect.plugins.introspection.ReflectConstructorInfoImpl.newInstance(ReflectConstructorInfoImpl.java:106) at org.jboss.joinpoint.plugins.BasicConstructorJoinPoint.dispatch(BasicConstructorJoinPoint.java:80) at org.jboss.aop.microcontainer.integration.AOPConstructorJoinpoint.createTarget(AOPConstructorJoinpoint.java:276) at org.jboss.aop.microcontainer.integration.AOPConstructorJoinpoint.dispatch(AOPConstructorJoinpoint.java:97) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241) at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70) at org.jboss.kernel.plugins.dependency.InstantiateAction.installActionInternal(InstantiateAction.java:66) at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54) at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42) at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62) at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71) at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51) at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598) at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540) at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deployBean(AbstractKernelDeployer.java:331) at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deployBeans(AbstractKernelDeployer.java:309) at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deploy(AbstractKernelDeployer.java:130) at org.jboss.kernel.plugins.deployment.BasicKernelDeployer.deploy(BasicKernelDeployer.java:76) at org.jboss.kernel.plugins.deployment.xml.BasicXMLDeployer.deploy(BasicXMLDeployer.java:88) at org.jboss.ejb3.client.ClientLauncher.deploy(ClientLauncher.java:427) at org.jboss.ejb3.client.ClientLauncher.launch(ClientLauncher.java:268) at org.jboss.ejb3.client.ClientLauncher.launch(ClientLauncher.java:174) at org.jboss.ejb3.client.ClientLauncher.launch(ClientLauncher.java:138) at org.jboss.client.AppClientMain.main(AppClientMain.java:134) Caused by: javax.naming.NamingException: Could not dereference object [Root exception is javax.naming.NameNotFoundException: jms not bound] at org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1339) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:804) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:673) at org.jboss.ejb3.client.JndiPropertyInjector.lookup(JndiPropertyInjector.java:107) ... 38 more Caused by: javax.naming.NameNotFoundException: jms 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:396) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) at sun.rmi.transport.Transport$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Unknown Source) at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source) at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source) at sun.rmi.server.UnicastRef.invoke(Unknown Source) at org.jnp.server.NamingServer_Stub.lookup(Unknown Source) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:713) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:673) at javax.naming.InitialContext.lookup(Unknown Source) at org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1333) ... 41 more 2009-01-27 20:23:30,203 DEBUG [main][org.jboss.ejb3.client.ClientLauncher] - <Deployed AbstractKernelDeployment@5e5a50{name=ClientLauncherClassPath:0.0.0 installed=true beanFactories=[AbstractBeanMetaData@7b6889{name=ClassLoaderSystem bean=org.jboss.classloader.spi.ClassLoaderSystem properties= constructor=AbstractConstructorMetaData@c2ff5{parameters= factoryClass=org.jboss.ejb3.client.ClientLauncher factoryMethod=getClassLoaderSystem} autowireCandidate=true}, AbstractBeanMetaData@20be79{name=ClassLoading bean=org.jboss.classloading.spi.dependency.ClassLoading properties= constructor=null autowireCandidate=true installCallbacks=[method=addModule] uninstallCallbacks=[method=removeModule]}, VFSClassLoaderFactory@1b9240e{name=ClientLauncherClassPath version=0.0.0 parent-first=true}, AbstractBeanMetaData@1ee4648{name=ClientContainer bean=org.jboss.ejb3.client.ClientContainer properties= classLoader=AbstractClassLoaderMetaData@482923{classloader=AbstractDependencyValueMetaData@184ec44{value=ClientLauncherClassPath:0.0.0}} constructor=AbstractConstructorMetaData@1b383e9{parameters=[org.jboss.metadata.client.jboss.JBossClientMetaData, java.lang.Class, java.lang.String, java.util.Properties]} autowireCandidate=true}]}> 2009-01-27 20:23:30,218 WARN [main][org.jboss.client.AppClientMain] - <Failed to launch using: org.jboss.ejb3.client.ClientLauncher> java.lang.IllegalStateException: Incompletely deployed: *** DEPLOYMENTS IN ERROR: Name -> Error ClientContainer -> java.lang.RuntimeException: Unable to inject jndi dependency: env/de.fhw.komponentenarchitekturen.knauf.mdb.MessageFrame/queue into property de.fhw.komponentenarchitekturen.knauf.mdb.MessageFrame.queue: jms not bound at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.internalValidate(AbstractKernelDeployer.java:290) at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.validate(AbstractKernelDeployer.java:174) at org.jboss.ejb3.client.ClientLauncher.validate(ClientLauncher.java:471) at org.jboss.ejb3.client.ClientLauncher.launch(ClientLauncher.java:269) at org.jboss.ejb3.client.ClientLauncher.launch(ClientLauncher.java:174) at org.jboss.ejb3.client.ClientLauncher.launch(ClientLauncher.java:138) at org.jboss.client.AppClientMain.main(AppClientMain.java:134
Now I change the injection to this:@Resource(name="jms/MBQueueRef") private static Queue queue;
This results in a deployment error:20:24:30,671 ERROR [Ejb3ClientDeployer] Could not deploy vfszip:/C:/temp/jboss-5.0.0.GA/server/default/tmp/jsr88/Message.ear/MessageClient.jar java.lang.RuntimeException: message-destination has no jndi-name/resolved-jndi-name MessageDestinationReferenceMetaData{name=jms/MBQueueRef,type=javax.jms.Queue,link=null,ignore-dependecy=false,jndi-name=null,resolvoed-jndi-name=null,usage=null} at org.jboss.ejb3.clientmodule.ResourceHandler.loadXmlMessageDestinationRefs(ResourceHandler.java:261) at org.jboss.ejb3.clientmodule.ResourceHandler.loadXml(ResourceHandler.java:275) at org.jboss.ejb3.clientmodule.ClientENCInjectionContainer.processMetaData(ClientENCInjectionContainer.java:325) at org.jboss.ejb3.clientmodule.ClientENCInjectionContainer.<init>(ClientENCInjectionContainer.java:175) at org.jboss.ejb3.deployers.Ejb3ClientDeployer.deploy(Ejb3ClientDeployer.java:162) at org.jboss.ejb3.deployers.Ejb3ClientDeployer.deploy(Ejb3ClientDeployer.java:61)
I'm just playing around with annotations as I don't know how Injection should work, so it would be great if you could tell me how to use Queue injection from ENC. I know how to perform injection from global JNDI.
For the QueueConnectionFactory, I found a way, but don't know whether this is correct ;-)
Thanks
Wolfgang -
3. Re: Injection of QueueConnectionFactory and Queue from ENC i
jaikiran Jan 28, 2009 9:43 AM (in response to wolfgangknauf)Haven't got a chance to look at this yet. Will see tomorrow :)
-
4. Re: Injection of QueueConnectionFactory and Queue from ENC i
wolfgangknauf Jan 28, 2009 3:42 PM (in response to wolfgangknauf)Many thanks in advance!
By the way: I uploaded a new sample EAR, as "META-INF" in ejb-jar was in the wrong place in the previous one (no impact on the sample, as nothing relevant was inside). Don't know whether WTP got confused or I "misdragged" it (the latter probably ;-) ). -
5. Re: Injection of QueueConnectionFactory and Queue from ENC i
wolfgangknauf Feb 3, 2009 9:32 AM (in response to wolfgangknauf)Hi Jaikiran,
did you find the time to look at it?
Thanks
Wolfgang -
6. Re: Injection of QueueConnectionFactory and Queue from ENC i
jaikiran Feb 3, 2009 9:45 AM (in response to wolfgangknauf)Wolfgang,
Sorry not yet. I am planning to look at this (and one of your other issue related to *-service.xml) pretty soon. Will keep this thread updated. -
7. Re: Injection of QueueConnectionFactory and Queue from ENC i
jaikiran Mar 2, 2009 1:47 AM (in response to wolfgangknauf)Finally got some time to figure this out.
The application-client.xml and the jboss-client.xml provide specific elements for referencing message destinations (queue/topic). So instead of using a resource-ref for a queue, use the message-destination-ref as follows:<?xml version="1.0" encoding="UTF-8"?> <application-client id="Application-client_ID" version="5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application-client_5.xsd"> <display-name> MessageClient</display-name> <resource-ref> <res-ref-name>jms/MBConnectionFactory</res-ref-name> <res-type>javax.jms.QueueConnectionFactory</res-type> <res-auth>Container</res-auth> </resource-ref> <message-destination-ref> <message-destination-ref-name>jms/MBQueueRef</message-destination-ref-name> <message-destination-type>javax.jms.Queue</message-destination-type> </message-destination-ref> </application-client>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jboss-client PUBLIC "-//JBoss//DTD Application Client 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-client_5_0.dtd"> <jboss-client> <jndi-name>MessageClient</jndi-name> <resource-ref> <res-ref-name>jms/MBConnectionFactory</res-ref-name> <jndi-name>ConnectionFactory</jndi-name> </resource-ref> <message-destination-ref> <message-destination-ref-name>jms/MBQueueRef</message-destination-ref-name> <jndi-name>queue/MessageBeanQueue</jndi-name> </message-destination-ref> </jboss-client>
Then you can use @Resource in the application client to inject this:@Resource(name="jms/MBConnectionFactory") private static QueueConnectionFactory queueConnectionFactory; @Resource(name="jms/MBQueueRef") private static Queue queue;
-
8. Re: Injection of QueueConnectionFactory and Queue from ENC i
wolfgangknauf Mar 2, 2009 7:04 AM (in response to wolfgangknauf)Many thanks! I feared it would be an user error ;-).
I will give it a try in the next few days, and I will add a chapter about this to your injection wiki entry.
Wolfgang -
9. Re: Injection of QueueConnectionFactory and Queue from ENC i
jaikiran Mar 2, 2009 8:04 AM (in response to wolfgangknauf)"Wolfgang Knauf" wrote:
and I will add a chapter about this to your injection wiki entry.
Wolfgang
That would be great! Thanks. -
10. Re: Injection of QueueConnectionFactory and Queue from ENC i
wolfgangknauf Mar 4, 2009 4:22 PM (in response to wolfgangknauf)Done, all credits are yours ;-)!
http://www.jboss.org/community/docs/DOC-12835
Wolfgang -
11. Re: Injection of QueueConnectionFactory and Queue from ENC i
wolfgangknauf Mar 4, 2009 4:33 PM (in response to wolfgangknauf)Done (all credits are yours ;-) )
https://www.jboss.org/community/docs/DOC-12835
Wolfgang -
12. Re: Injection of QueueConnectionFactory and Queue from ENC i
jaikiran Mar 5, 2009 6:01 AM (in response to wolfgangknauf)Thanks for adding this to wiki :)