Having issues re-deploying my webapp using Tomcat Manager. Previously used
tomcat 5.0.28 with no issues, now using tomcat 6.0.14 and can't re-deploy. I'm
getting an exception: "java.util.zip.ZipException: error reading zip file".
Sequence of actions and my configuration are below.
1) Start Tomcat (my webapp is not already installed)
2) "ant deploy" à webapp works fine
3) "ant deploy" à webapp is undeployed, but not re-deployed (even though
there is a log msg in tomcat.log saying "Deploying")
a. In tomcat.log:
10:32:28,216 INFO [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]:
Manager: init: Associated with Deployer
'Catalina:type=Deployer,host=localhost'
10:32:28,217 INFO [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]:
Manager: init: Global resources are available
10:32:28,228 INFO [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]:
Manager: undeploy: Undeploying web application at '/jglass'
10:32:29,006 INFO [http-8080-1] org.apache.catalina.startup.HostConfig:
Undeploying context [/jglass]
10:32:41,611 INFO [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]:
Manager: deploy: Deploying web application at '/jglass'
10:32:41,611 INFO [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]:
Manager: Uploading WAR file to /usr/local/jakarta-tomcat/webapps/jglass.war
10:32:45,317 INFO [http-8080-1] org.apache.catalina.startup.HostConfig:
Deploying web application archive jglass.war
b. In webapp.log:
10:32:28,242 INFO [] SessionListener: ========== sessionDestroyed:
6F32614EDB7F15D1752D00A3DDAD9437.W01 ==========
10:32:28,243 INFO [] SessionListener: ========== contextDestroyed: IGLASS
==========
4) "ant deploy" à tries to deploy, but receives exception
a. In tomcat.log:
10:40:02,982 INFO [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]:
Manager: undeploy: Undeploying web application at '/jglass'
10:40:03,004 INFO [http-8080-1] org.apache.catalina.startup.HostConfig:
Undeploying context [/jglass]
10:40:04,967 INFO [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]:
Manager: deploy: Deploying web application at '/jglass'
10:40:04,969 INFO [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]:
Manager: Uploading WAR file to /usr/local/jakarta-tomcat/webapps/jglass.war
10:40:07,190 INFO [http-8080-1] org.apache.catalina.startup.HostConfig:
Deploying web application archive jglass.war
10:40:39,488 INFO [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/jglass]: Log4J
config file: prefix [/usr/local/jakarta-tomcat/webapps/jglass/],
filename[WEB-INF/classes/log4j.xml], WITH watchdog
Log4J, using DOMConfigurator.
10:40:39,739 INFO [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/jglass]:
Marking servlet action as unavailable
10:40:39,743 ERROR [http-8080-1]
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/jglass]:
Servlet /jglass threw load() exception
javax.servlet.UnavailableException: java.util.zip.ZipException: error reading
zip file
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:402)
at
net.iglass.jglass.servlets.FrontController.init(FrontController.java:49)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at
org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4045)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4351)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:515)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1220)
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.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at
org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1458)
at
org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:641)
b. In webapp.log:
10:40:39,425 INFO [] SessionListener: ========== contextInitialized:
IGLASS ==========
10:40:39,670 DEBUG [] SessionListener: ===== APPL attrAdded:
(org.apache.struts.action.SERVLET_MAPPING) =====
10:40:39,677 INFO [] ActionServlet: Loading chain catalog from
jar:file:/usr/local/apache-tomcat-6.0.14/webapps/jglass/WEB-INF/lib/struts-core-1.3.8.jar!/org/apache/struts/chain/chain-config.xml
10:40:39,707 ERROR [] ActionServlet: Exception loading resources
java.util.zip.ZipException: error reading zip file
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1200(ZipFile.java:29)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:447)
at java.util.zip.ZipFile$1.fill(ZipFile.java:230)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:105)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:2910)
at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:704)
at
com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.apache.commons.digester.Digester.parse(Digester.java:1745)
at
org.apache.commons.chain.config.ConfigParser.parse(ConfigParser.java:198)
at
org.apache.struts.action.ActionServlet.initChain(ActionServlet.java:1687)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:350)
5) Restart Tomcat à webapp works fine
I can unzip struts-core-1.3.8.jar from the command line. I have tried
combinations of "unpackWARs/deployOnStartup/autoDeploy" in server.xml. I have
tried adding "antiJARLocking" to context.xml. I have tried combinations of
including/not-including "path/war/config" in my Ant deploy target. I do get
different, somewhat functional results with "unpackWARs=false" à webapp does
deploy and partially works, but images and JavaScript code are not loaded.
In
http://tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment,
I'm assuming that "automatic deployment" (while Tomcat is already running)
refers to "autoDeploy=true". (Just wondering how the last 2 paragraphs of this
section apply to my case since I do have a "context.xml" in my webapp.)
Could there be file permission issues? Tomcat is owned-by/running-as user
"tomcat". The Ant "deploy" target is, of course, running with "manager" role.
I'm now at a loss. Any help would be appreciated (having to restart Tomcat
every time is a real pain). My configuration follows.
server.xml:
<Host name="localhost" appBase="webapps"
unpackWARs="true" deployOnStartup="true" autoDeploy="false"
xmlValidation="false" xmlNamespaceAware="false">
context.xml inside my webapp:
<Context className="org.apache.catalina.core.StandardContext"
crossContext="false" debug="0"
override="true" privileged="false" reloadable="false"
swallowOutput="true" useNaming="true">
Ant deploy target:
<target name="deploy" depends="checkTomcat, undeploy" if="is.tomcat.started"
description="Use Tomcat manager application to deploy the
application">
<taskdef name="tm_deploy" classname="org.apache.catalina.ant.DeployTask"
/>
<tm_deploy url="${tomcat.manager.url}"
username="${tomcat.manager}"
password="${tomcat.manager.password}"
path="/${webapp.context.name}"
war="file:${appWarFile}"
config="file:${appContextFile}"
update="true" />
</target>