________________________________________ De : Simon Laws [[email protected]] Date d'envoi : vendredi 18 novembre 2011 14:33 À : [email protected] Objet : Re: binding.jms work at standalone but not in tomcat webapp
On Thu, Nov 17, 2011 at 8:32 AM, Ruault Gaetan <[email protected]> wrote: > > Hi, > > > I have a problem with binding.jms in "webapp mode" > > i have a composite like this : > > <service name="GestionAdherentAm" > promote="GestionAdherentComponent/GestionAdherentAm"> > <interface.wsdl wsdlLocation="wsdl/GestionAdherentAm.wsdl" > interface="http://gestionAdherentAm.masteri_operationne.com/#wsdl.interface(GestionAdherentAm)"/> > <binding.jms > initialContextFactory="com.socle.hornetq.client.jndi.HornetQClientInitialContextFactory" > jndiURL="jnp://localhost:1099"> > <destination name="/queue/DefaultQueue" create="never"/> > <ts:wireFormat.jmsTextXML/> > </binding.jms> > </service> > > > if i launch my project with a main class and SCADomain scaDomain > = SCADomain.newInstance("AdherentAm.composite"); > > > The service is OK and it work fine. > > > but when i start the project in tomcat webapp(the composite is deployed in > Webapp with sca-contribution.xml) > > i have this error : > > GRAVE: Exception au démarrage du filtre tuscany > org.osoa.sca.ServiceRuntimeException: > java.lang.reflect.InvocationTargetException > at > org.apache.tuscany.sca.host.embedded.SCADomain.createNewInstance(SCADomain.java:220) > at > org.apache.tuscany.sca.host.embedded.SCADomain.newInstance(SCADomain.java:76) > at > org.apache.tuscany.sca.host.webapp.WebAppServletHost.init(WebAppServletHost.java:238) > at > org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.init(TuscanyServletFilter.java:52) > at > org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295) > at > org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422) > at > org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115) > at > org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001) > at > org.apache.catalina.core.StandardContext.start(StandardContext.java:4651) > at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) > at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) > at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) > at > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) > at > org.apache.catalina.core.StandardService.start(StandardService.java:519) > at > org.apache.catalina.core.StandardServer.start(StandardServer.java:710) > at org.apache.catalina.startup.Catalina.start(Catalina.java:581) > 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 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) > Caused by: java.lang.reflect.InvocationTargetException > 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.apache.tuscany.sca.host.embedded.SCADomain.createNewInstance(SCADomain.java:199) > ... 21 more > Caused by: org.apache.tuscany.sca.binding.jms.impl.JMSBindingException: > Error starting JMSServiceBinding > at > org.apache.tuscany.sca.binding.jms.provider.JMSBindingServiceBindingProvider.start(JMSBindingServiceBindingProvider.java:152) > at > org.apache.tuscany.sca.core.assembly.CompositeActivatorImpl$3.run(CompositeActivatorImpl.java:630) > at java.security.AccessController.doPrivileged(Native Method) > at > org.apache.tuscany.sca.core.assembly.CompositeActivatorImpl.start(CompositeActivatorImpl.java:628) > at > org.apache.tuscany.sca.core.assembly.CompositeActivatorImpl.start(CompositeActivatorImpl.java:560) > at org.apache.tuscany.sca.node.impl.NodeImpl.start(NodeImpl.java:728) > at > org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.init(DefaultSCADomain.java:187) > at > org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.<init>(DefaultSCADomain.java:100) > at > org.apache.tuscany.sca.host.webapp.WebSCADomain.<init>(WebSCADomain.java:41) > ... 26 more > Caused by: org.apache.tuscany.sca.binding.jms.impl.JMSBindingException: > Error starting JMSServiceBinding > at > org.apache.tuscany.sca.host.jms.asf.ASFListener.start(ASFListener.java:78) > at > org.apache.tuscany.sca.binding.jms.provider.JMSBindingServiceBindingProvider.start(JMSBindingServiceBindingProvider.java:149) > ... 34 more > Caused by: org.apache.tuscany.sca.binding.jms.impl.JMSBindingException: > connection factory not found: ConnectionFactory > at > org.apache.tuscany.sca.binding.jms.provider.JMSResourceFactoryImpl.createConnection(JMSResourceFactoryImpl.java:133) > at > org.apache.tuscany.sca.binding.jms.provider.JMSResourceFactoryImpl.getConnection(JMSResourceFactoryImpl.java:75) > at > org.apache.tuscany.sca.binding.jms.provider.JMSResourceFactoryImpl.createSession(JMSResourceFactoryImpl.java:86) > at > org.apache.tuscany.sca.host.jms.asf.ASFListener.registerListerner(ASFListener.java:100) > at > org.apache.tuscany.sca.host.jms.asf.ASFListener.start(ASFListener.java:76) > ... 35 more > > > > i don't understand where is my mistake because, it the same projet then > the same library classpath. All libraries are checked in JEE dependencies, > etc...etc... > could you help me ? > > > thanks > > gaetan > > > > > Hi Ruault It looks like you're using Tuscany 1.x? The line it's failing on is doing a jndi lookup on the connection factory name and for some reason it can't find it in this environment. Here's the code from JMSResourceFactoryImpl [1] protected void createConnection() throws NamingException, JMSException { ConnectionFactory connectionFactory = (ConnectionFactory)jndiLookUp(connectionFactoryName); if (connectionFactory == null) { throw new JMSBindingException("connection factory not found: " + connectionFactoryName); } connection = connectionFactory.createConnection(); } ... protected Object jndiLookUp(String name) { Object o = null; try { o = getInitialContext().lookup("java:comp/env/" + name); } catch (Exception ex) { // ignore } if (o == null) { try { o = getInitialContext().lookup(name); } catch (NamingException ex) { // ignore } } return o; } ... protected synchronized Context getInitialContext() throws NamingException { if (context == null) { Properties props = new Properties(); if (initialContextFactoryName != null) { props.setProperty(Context.INITIAL_CONTEXT_FACTORY, initialContextFactoryName); } if (jndiURL != null) { props.setProperty(Context.PROVIDER_URL, jndiURL); } initJREEnvironment(props); context = new InitialContext(props); } return context; } The error reports that it can't find the connection factory called "ConnectionFactory" which is the hardcoded default. Is the JMS provider in your Tomcat environment providing something different? [1] http://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactoryImpl.java Simon -- Apache Tuscany committer: tuscany.apache.org Co-author of a book about Tuscany and SCA: tuscanyinaction.com Hi thanks for your answer, but is the same JMS provider(is a standalone hornetq server) when i launch project as tomcat webapp and when i launch it as standalone. I don't understand where is my problem. In two case, is the same java code, tuscany conf and hornetq Server...
