Exploding jar libraries in deployments
jaikiran Aug 3, 2009 3:50 AMHaving an archived war file in AS-5.1.0 (Branch_5_x and trunk) which contains jar files in the WEB-INF/lib folder of the war leads to these jars being exploded to tmp folder too. Any specific reason why we are exploding the jars in the lib folder of the war? My understanding was that (like AS 4.x) we would explode just the war file (deployment) and not the libraries contained in the deployment.
myapp.war (archived) | |--- WEB-INF | | | |--- lib | | |--- myapp.jar
The side effect of exploding the library jar files is that it can lead to the deployment to fail, because there's some deployment code (in tomcat) which expects these libraries to be archived jar files:
12:36:24,050 ERROR [TldConfig] Exception processing JAR at resource path /home/jpai/jbossas/branches/Branch_5_x/build/output/jboss-5.2.0.Beta/server/default/tmp/3j001-wsysts-fxwux83v-1-fxwuy9zz-9p/myapp-isolation-test.war/WEB-INF/lib/myapp.jar in context /myapp-isolation-test java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(ZipFile.java:203) at java.util.jar.JarFile.<init>(JarFile.java:132) at java.util.jar.JarFile.<init>(JarFile.java:97) at org.apache.catalina.startup.TldConfig.tldScanJar(TldConfig.java:461) at org.apache.catalina.startup.TldConfig.execute(TldConfig.java:301) at org.apache.catalina.core.StandardContext.processTlds(StandardContext.java:4540) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4308) at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310) at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142) at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:462) at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118) at org.jboss.web.deployers.WebModule.start(WebModule.java:97) 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:585) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157) at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96) at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668) at org.jboss.system.server.jmx.LazyMBeanServer.invoke(LazyMBeanServer.java:283) at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206) at $Proxy38.start(Unknown Source) at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42) at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37) at ...//trimmed irrelevant stacktrace
By the way, where does the code which does the tmp file exploding reside? Is it in AS or some MC component?