Hi David,
I finally made this work after some struggling with all the jms configuring
in geronimo and axis2. It turned out as you mentioned below, i should merge
activemq's jms config into axis2 to make it right for axis2 1.1 and geronimo
1.1.1. It feels still some work need to be done to get better user experiences
for using axis2 over jms with geronimo activemq. Anyway feels good to get one
exmaple to work at this stage.
falom
David Jencks <[EMAIL PROTECTED]> wrote:
On Jan 20, 2007, at 7:42 PM, falom wrote:
Hi David,
The axis2 client code is standalone, the name being looked up is
java:comp/env/jms/myQueueConnectionFactory, it should return an object of
ConnectionFactory.
I think if i use plain javax.jms.* api instead of axis2 jms api, i can connect
to the predefined jms resources in geronimo. So i'm kind of confused, since
axis2 jms api should be based on standards. Maybe something else i'm missing
here?
OK, I think I know what's going on but keep in mind I haven't tried any of this
:-)
If your code is not running in a javaee container its extremely unlikely that
you can look up anything under java:comp.�� That context is "reserved" by the
ee specs for stuff configured by ee descriptors or annotations specific to the
ee component, and it provides a layer of indirection so you can change what
your app gets without changing its code.
Since you're client is not running in an ee container you need to configure
the activemq jndi using the amq specific properties file configuration outlined
here:
http://incubator.apache.org/activemq/jndi-support.html
In particular your app is going to need to look up something like
"myQueueConnectionFactory" rather than "java:comp/env/myQueueConnectionFactory"
If you client was running in an ee app client container or ee server then it
should be possible to configure jndi so java:comp/env/myQueueConnectionFactory
gets you what you want.
Hope this helps
david jencks
falom
David Jencks <[EMAIL PROTECTED]> wrote锛?lt;BLOCKQUOTE class="replbq"
style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left:
5px;">
On Jan 20, 2007, at 9:04 AM, falom wrote:
Hi David,
I installed axis2 1.1 war in geronimo. Since Axis2 support soap over jms, so
what i'm trying to do is:
- first start axis2 jmslistner to listen one queue on geronimo activemq which i
managed to do with a delpoyed axis2 web service��?within geronimo server
- then i write a axis2 client to call the service, which involve first
connecting to the��?geronimo activemq broker to locate a predefined
connectionfactory, where i got the following exception.
Is the code that generates the stack trace running in geronimo or standalone?
What name is being looked up in jndi and what object do you expect to get
back?
thanks
david jencks
falom
David Jencks <[EMAIL PROTECTED]> wrote���锟� I don't understand what you are
trying to do, but I will comment anyway.
I suspect you are trying to use the wrong jndi tree.��憋拷 I would expect that
in geronimo you would set up an amq rar deployment pointing to your remote amq
broker and deploy an outbound connection factory and some admin
objects/destinations/queues or topics.��憋拷 This would all be in
geronimo.��卞��浼�
The next step would be to make it so axis is using the geronimo java:comp
jndi context instead of the amq remote context.��憋拷 I suspect this is going to
involve installing an interceptor into axis2 since from the stack trace it
looks like the thread involved is coming from a thread pool controlled by axis
and the jndi java:comp context relies on a ThreadLocal to hold the correct
context.��憋拷 An axis2 expert is going to need to comment on how to do this :-)
thanks
david jencks
On Jan 20, 2007, at 5:48 AM, falom wrote:
Hi Lin,
I setup jms resource in geronimo and have one axis2 client trying to connection
to it and call one axis2 service, but i got javax.naming.NamingException:
scheme java not recognized exception. Does this mean incompatibility between
geronimo's activemq and current axis2 jms implementation? Or do you have any
idea how to go around this. I did manage to have the axis2 jms listener up
working within geronimo server.
falom
2007-1-20 21:37:26 org.apache.axis2.transport.jms.JMSOutTransportInfo
handleException
error: Cannot get JMS Connection factory with props :
{java.naming.provider.url=tcp://localhost:61616,
java.naming.factory.initial=org.activemq.jndi.ActiveMQInitialContextFactory,
transport.jms.ConnectionFactoryJNDIName=java:comp/env/jms/myQueueConnectionFactory}
javax.naming.NamingException: scheme java not recognized
��卞��浼i�憋拷 at
org.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:198)
��卞��浼i�憋拷 at javax.naming.InitialContext.lookup(Unknown Source)
��卞��浼i�憋拷 at
org.apache.axis2.transport.jms.JMSOutTransportInfo.getConnectionFactory(JMSOutTransportInfo.java:85)
��卞��浼i�憋拷 at
org.apache.axis2.transport.jms.JMSOutTransportInfo.<init>(JMSOutTransportInfo.java:69)
��卞��浼i�憋拷 at
org.apache.axis2.transport.jms.JMSSender.invoke(JMSSender.java:66)
��卞��浼i�憋拷 at
org.apache.axis2.engine.AxisEngine$TransportNonBlockingInvocationWorker.run(AxisEngine.java:746)
��卞��浼i�憋拷 at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
��卞��浼i�憋拷 at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
��卞��浼i�憋拷 at java.lang.Thread.run(Unknown Source)
2007-1-20 21:37:26
org.apache.axis2.engine.AxisEngine$TransportNonBlockingInvocationWorker run
info: Cannot get JMS Connection factory with props :
{java.naming.provider.url=tcp://localhost:61616,
java.naming.factory.initial=org.activemq.jndi.ActiveMQInitialContextFactory,
transport.jms.ConnectionFactoryJNDIName=java:comp/env/jms/myQueueConnectionFactory}
C:\Axis2_1.1\axis2-1.1\samples\Axis2JmsWorkingSample2\client_repository
2007-1-20 21:37:29 org.apache.axis2.deployment.DeploymentEngine doDeploy
info: Deploying module : addressing-1.1
2007-1-20 21:37:29 org.apache.axis2.transport.jms.JMSOutTransportInfo
handleException
error: Cannot get JMS Connection factory with props :
{java.naming.provider.url=tcp://localhost:61616,
java.naming.factory.initial=org.activemq.jndi.ActiveMQInitialContextFactory,
transport.jms.ConnectionFactoryJNDIName=java:comp/env/jms/myQueueConnectionFactory}
javax.naming.NamingException: scheme java not recognized
��卞��浼i�憋拷 at
org.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:198)
��卞��浼i�憋拷 at javax.naming.InitialContext.lookup(Unknown Source)
��卞��浼i�憋拷 at
org.apache.axis2.transport.jms.JMSOutTransportInfo.getConnectionFactory(JMSOutTransportInfo.java:85)
��卞��浼i�憋拷 at
org.apache.axis2.transport.jms.JMSOutTransportInfo.<init>(JMSOutTransportInfo.java:69)
��卞��浼i�憋拷 at
org.apache.axis2.transport.jms.JMSSender.invoke(JMSSender.java:66)
��卞��浼i�憋拷 at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:670)
��卞��浼i�憋拷 at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:365)
��卞��浼i�憋拷 at
org.apache.axis2.description.OutInAxisOperationClient$NonBlockingInvocationWorker.run(OutInAxisOperation.java:444)
��卞��浼i�憋拷 at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
��卞��浼i�憋拷 at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
��卞��浼i�憋拷 at java.lang.Thread.run(Unknown Source)
2007-1-20 21:37:29 org.apache.axis2.jms2.JMSActiveEchoClient$1 onError
info: Cannot get JMS Connection factory with props :
{java.naming.provider.url=tcp://localhost:61616,
java.naming.factory.initial=org.activemq.jndi.ActiveMQInitialContextFactory,
transport.jms.ConnectionFactoryJNDIName=java:comp/env/jms/myQueueConnectionFactory}
2007-1-20 21:37:30 org.apache.axis2.deployment.DeploymentEngine doDeploy
info: Deploying module : addressing-1.1
C:\Axis2_1.1\axis2-1.1\samples\Axis2JmsWorkingSample2\client_repository
2007-1-20 21:37:30 org.apache.axis2.transport.jms.JMSOutTransportInfo
handleException
error: Cannot get JMS Connection factory with props :
{java.naming.provider.url=tcp://localhost:61616,
java.naming.factory.initial=org.activemq.jndi.ActiveMQInitialContextFactory,
transport.jms.ConnectionFactoryJNDIName=java:comp/env/jms/myQueueConnectionFactory}
javax.naming.NamingException: scheme java not recognized
��卞��浼i�憋拷 at
org.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:198)
��卞��浼i�憋拷 at javax.naming.InitialContext.lookup(Unknown Source)
��卞��浼i�憋拷 at
org.apache.axis2.transport.jms.JMSOutTransportInfo.getConnectionFactory(JMSOutTransportInfo.java:85)
��卞��浼i�憋拷 at
org.apache.axis2.transport.jms.JMSOutTransportInfo.<init>(JMSOutTransportInfo.java:69)
��卞��浼i�憋拷 at
org.apache.axis2.transport.jms.JMSSender.invoke(JMSSender.java:66)
��卞��浼i�憋拷 at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:670)
��卞��浼i�憋拷 at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:365)
��卞��浼i�憋拷 at
org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:295)
��卞��浼i�憋拷 at
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:579)
��卞��浼i�憋拷 at
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)
��卞��浼i�憋拷 at
org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:95)
��卞��浼i�憋拷 at
org.apache.axis2.jms2.JMSActiveEchoClient.test03EchoString(JMSActiveEchoClient.java:249)
��卞��浼i�憋拷 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
��卞��浼i�憋拷 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
��卞��浼i�憋拷 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
��卞��浼i�憋拷 at java.lang.reflect.Method.invoke(Unknown Source)
��卞��浼i�憋拷 at junit.framework.TestCase.runTest(TestCase.java:164)
��卞��浼i�憋拷 at junit.framework.TestCase.runBare(TestCase.java:130)
��卞��浼i�憋拷 at junit.framework.TestResult$1.protect(TestResult.java:110)
��卞��浼i�憋拷 at junit.framework.TestResult.runProtected(TestResult.java:128)
��卞��浼i�憋拷 at junit.framework.TestResult.run(TestResult.java:113)
��卞��浼i�憋拷 at junit.framework.TestCase.run(TestCase.java:120)
��卞��浼i�憋拷 at junit.framework.TestSuite.runTest(TestSuite.java:228)
��卞��浼i�憋拷 at junit.framework.TestSuite.run(TestSuite.java:223)
��卞��浼i�憋拷 at
org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:35)
��卞��浼i�憋拷 at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
��卞��浼i�憋拷 at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
��卞��浼i�憋拷 at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
��卞��浼i�憋拷 at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
��卞��浼i�憋拷 at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
��卞��浼i�憋拷 at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Lin Sun <[EMAIL PROTECTED]> wrote��挎冻��? Hi there, you can look at the jms and
mdb sample that comes w/ geronimo 1.1 doc -
http://cwiki.apache.org/GMOxDOC11/jms-and-mdb-sample-application.html. Also I
think the daytrader sample also uses the resource-ref and
message-destination-ref you mentioned.
HTH, Lin
________________________________________
From: falom [mailto:[EMAIL PROTECTED]
Sent: Friday, January 19, 2007 10:01 PM
To: [email protected]
Subject: [geronimo1.1.1] Re: Re: Axis2 war classloader ClassNotFoundException
Hi Lin,
Big thanks for the tip, it worked after a bit struggling with all the resource
config in both geronimo and axis2. I will test now to see if axis2 client can
call and get response from the server. BTW, do you know a good place to read
more about all the ejb config parameters like following:
jms/myQueueConnectionFactory
javax.jms.QueueConnectionFactory
Container
Shareable
jms/myQueue
javax.jms.Queue
Produces
myQueue
falom
Lin Sun wrote��挎冻��?
Hi there, I haven't tried to configure this myself but wonder if you can fix
this by creating a Geronimo-web.xml for the axis2 war file. In the
Geronimo-web.xml file, you can specify the activemq broker as the dependency of
the axis2 war to request the classloder to make the activemq broker avail for
the axis2 war.
HTH Lin
________________________________________
From: falom [mailto:[EMAIL PROTECTED]
Sent: Thursday, January 18, 2007 9:36 PM
To: [email protected]
Subject: [geronimo1.1.1] Axis2 war classloader ClassNotFoundException
Hi,
I installed axis2 war in both tomcat and geronimo.
First I managed to test axis2 jms transport in tomcat connecting to standalone
activemq broker by deploying one service using servicelifecycle to start up the
jmslistener.
BUT when i deploy the same service in geronimo, while trying connect to the
activemq broker within geronimo, i got following exception attached, seems like
problem related to classloader, or something else which i am really stuck with.
I also reconfigured axis2 listener to use
org.activemq.jndi.ActiveMQInitialContextFactory instead of
org.apache.activemq.jndi.ActiveMQInitialContextFactory, but same exception.
I really need some clue what i do wrong, or how to go around this classloading
issue.
falom
22:46:30,709 INFO [JMSActiveEchoServiceLifeCycle] JMSActiveEchoServiceLifeCycle
startUp called.
22:46:30,719 ERROR [JMSListener] Error connecting to JMS connection factory :
TopicConnectionFactory
javax.naming.NoInitialContextException: Cannot instantiate class:
org.apache.activemq.jndi.ActiveMQInitialContextFactory [Root exception is
java.lang.ClassNotFoundException:
org.apache.activemq.jndi.ActiveMQInitialContextFactory in classloader
default/axis211/1164548268298/war]
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:657)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.(InitialContext.java:197)
at
org.apache.axis2.transport.jms.JMSConnectionFactory.createInitialContext(JMSConnectionFactory.java:133)
at
org.apache.axis2.transport.jms.JMSConnectionFactory.connect(JMSConnectionFactory.java:122)
at
org.apache.axis2.transport.jms.JMSListener.initializeConnectionFactories(JMSListener.java:244)
at org.apache.axis2.transport.jms.JMSListener.init(JMSListener.java:104)
at
org.apache.axis2.jms2.JMSActiveEchoServiceLifeCycle.startUp(JMSActiveEchoServiceLifeCycle.java:56)
at
org.apache.axis2.deployment.ServiceBuilder.loadServiceLifeCycleClass(ServiceBuilder.java:354)
at
org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:136)
at
org.apache.axis2.deployment.repository.util.ArchiveReader.buildServiceGroup(ArchiveReader.java:91)
at
org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:133)
at
org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:528)
at
org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:196)
at
org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:227)
at
org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:174)
at
org.apache.axis2.deployment.DeploymentEngine.loadServices(DeploymentEngine.java:88)
at
org.apache.axis2.deployment.WarBasedAxisConfigurator.loadServices(WarBasedAxisConfigurator.java:252)
at
org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:72)
at
org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:373)
at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:317)
at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
at
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3915)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4176)
at
org.apache.geronimo.tomcat.GeronimoStandardContext.access$201(GeronimoStandardContext.java:67)
at
org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:337)
at
org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:31)
at
org.apache.geronimo.tomcat.GeronimoStandardContext.start(GeronimoStandardContext.java:192)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at
org.apache.geronimo.tomcat.TomcatContainer.addContext(TomcatContainer.java:313)
at
org.apache.geronimo.tomcat.TomcatContainer$$FastClassByCGLIB$$9370b073.invoke()
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.tomcat.TomcatContainer$$EnhancerByCGLIB$$f3376869.addContext()
at
org.apache.geronimo.tomcat.TomcatWebAppContext.doStart(TomcatWebAppContext.java:438)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:981)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:267)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:124)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:540)
at
org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379)
at
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:374)
at
org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:187)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:527)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:508)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.invoke()
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.kernel.config.EditableConfigurationManager$$EnhancerByCGLIB$$d98215e2.startConfiguration()
at org.apache.geronimo.system.main.Daemon.doStartup(Daemon.java:297)
at org.apache.geronimo.system.main.Daemon.(Daemon.java:74)
at org.apache.geronimo.system.main.Daemon.main(Daemon.java:377)
---------------------------------
雅虎免费邮箱-3.5G容量,20M附件