Hi,

AFAIK, we don't support sharing (same classloader) tuscany jars across multiple web applications. As you have found out, packaging tuscany jars in the webapp works. There is another scheme we can support with the SCANode APIs: we can share the physical tuscany jars across multiple web applications, but these jars are still loaded by different classloaders from the webapp. If you are interested in this scheme, take a look at: https://svn.apache.org/repos/asf/tuscany/java/sca/modules/node-launcher-webapp.

Thanks,
Raymond

From: Jérôme Besnainou
Sent: Thursday, August 28, 2008 10:08 AM
To: [email protected]
Subject: Issue at tomcat stop time when I shared Tuscany lib between several webApplication


Hello,

I'm using tuscany 1.3 inside tomcat 6.0.16 with jdk 1.6.06.
I have 2 webApplications. These 2 webApplications are using sca composites (one composite on each webApplication). The tuscany lib are shared between these two webApplications on the tomcat « shared.loader ». Everything work well but I got this error when I stop tomcat and my second webApplication is undeployed :
org.apache.catalina.startup.HostConfig undeployApps
ATTENTION: Error while removing context [/datalayerApplicationTest]
java.lang.NullPointerException
at org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.close(DefaultSCADomain.java:365) at org.apache.tuscany.sca.host.webapp.WebSCADomain.destroy(WebSCADomain.java:50) at org.apache.tuscany.sca.host.webapp.WebAppServletHost.destroy(WebAppServletHost.java:302) at org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.destroy(TuscanyServletFilter.java:72) at org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:332) at org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:3744) at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4506) at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:924) at org.apache.catalina.startup.HostConfig.undeployApps(HostConfig.java:1189)
 at org.apache.catalina.startup.HostConfig.stop(HostConfig.java:1160)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:313) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
 at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1086)
 at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1098)
 at org.apache.catalina.core.StandardEngine.stop(StandardEngine.java:448)
 at org.apache.catalina.core.StandardService.stop(StandardService.java:584)
 at org.apache.catalina.core.StandardServer.stop(StandardServer.java:744)
 at org.apache.catalina.startup.Catalina.stop(Catalina.java:628)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:603)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

Note:
- If I have n webApplications the n-1 last webApplications raised this error at undeploy time. - If tuscany lib are put in each webApplication WEB-INF/lib there is no issue

I seems that when tomcat undeploy the first webApplication the « DefaultSCADomain » is closed for all composites.

I put in attachement frontApplication.composite (composite used on the first webApplication) and middleoffice.composite (composite used on the second webApplication).

Let me know your opinion about this issue.

Is it a best practice to shared tuscany lib or do you think it is better to put a tuscany in each webApplication ?

Best Regards,

 Jérôme



Reply via email to