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>