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