it-swarm.com.de

probleme beim Bereitstellen von .WAR auf Tomcat

ich habe Probleme beim Bereitstellen einer Kriegsdatei auf Tomcat.

ich habe eine Webapp in netbeans auf meiner Windows-Maschine geschrieben. alles läuft gut. Ich möchte die Anwendung auf meinem Linux-Computer bereitstellen, der als Server fungiert. Sobald die Anwendung erstellt ist, kopiere ich die WAR-Datei aus dem Ordner dist in meinem Projektverzeichnis auf ein Pendrive. Ich kopiere diese dann auf den Desktop meines Linux-Computers.

ich starte dann Tomcat und verwende mit dem Anwendungsmanager die Kriegsdatei, um sie bereitzustellen, und dann auf "Bereitstellen". Ich bekomme oben im Browser eine Nachricht mit der Aufschrift 'OK'. Wenn ich mir meine Tomcat-Ausgabe im Terminalfenster anschaue, habe ich folgende Fehlermeldung:

4/01/2011 5:09:07 PM org.Apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive Kingdoms.war
4/01/2011 5:09:07 PM org.Apache.catalina.startup.ContextConfig init
SEVERE: Exception fixing docBase for context [/Kingdoms] 
Java.util.Zip.ZipException: invalid CEN header (bad signature)
    at Java.util.Zip.ZipFile.open(Native Method)
    at Java.util.Zip.ZipFile.<init>(ZipFile.Java:114)
    at Java.util.jar.JarFile.<init>(JarFile.Java:135)
    at Java.util.jar.JarFile.<init>(JarFile.Java:72)
    at Sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.Java:72)
    at Sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.Java:48)
    at Sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.Java:70)
    at Sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.Java:104)
    at Sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.Java:71)
    at org.Apache.catalina.startup.ExpandWar.expand(ExpandWar.Java:111)
    at org.Apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.Java:706)
    at org.Apache.catalina.startup.ContextConfig.init(ContextConfig.Java:829)
    at org.Apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.Java:334)
    at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:119)
    at org.Apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.Java:89)
    at org.Apache.catalina.util.LifecycleBase.setState(LifecycleBase.Java:328)
    at org.Apache.catalina.util.LifecycleBase.setState(LifecycleBase.Java:308)
    at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:131)
    at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:812)
    at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:787)
    at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:570)
    at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:891)
    at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:491)
    at org.Apache.catalina.startup.HostConfig.check(HostConfig.Java:1322)
    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:1467)
    at org.Apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.Java:332)
    at org.Apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.Java:209)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:722)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:306)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:210)
    at org.Apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.Java:186)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:244)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:210)
    at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:240)
    at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:161)
    at org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:561)
    at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:164)
    at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:108)
    at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:558)
    at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:118)
    at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:379)
    at org.Apache.coyote.http11.Http11Processor.process(Http11Processor.Java:243)
    at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:259)
    at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:237)
    at org.Apache.Tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.Java:281)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:662)
4/01/2011 5:09:07 PM org.Apache.catalina.core.StandardContext resourcesStart
SEVERE: Error starting static Resources
Java.lang.IllegalArgumentException: Invalid or unreadable WAR file : invalid CEN header (bad signature)
    at org.Apache.naming.resources.WARDirContext.setDocBase(WARDirContext.Java:142)
    at org.Apache.catalina.core.StandardContext.resourcesStart(StandardContext.Java:4657)
    at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:4815)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:140)
    at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:812)
    at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:787)
    at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:570)
    at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:891)
    at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:491)
    at org.Apache.catalina.startup.HostConfig.check(HostConfig.Java:1322)
    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:1467)
    at org.Apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.Java:332)
    at org.Apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.Java:209)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:722)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:306)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:210)
    at org.Apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.Java:186)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:244)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:210)
    at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:240)
    at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:161)
    at org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:561)
    at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:164)
    at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:108)
    at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:558)
    at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:118)
    at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:379)
    at org.Apache.coyote.http11.Http11Processor.process(Http11Processor.Java:243)
    at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:259)
    at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:237)
    at org.Apache.Tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.Java:281)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:662)
4/01/2011 5:09:07 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Error in resourceStart()
4/01/2011 5:09:07 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Error getConfigured
4/01/2011 5:09:07 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Context [/Kingdoms] startup failed due to previous errors

auch ich kann jetzt in der Anwendungsliste meine App sehen. Ich klicke auf Start in den Befehlen für die App, erhalte jedoch eine Meldung am oberen Bildschirmrand mit der Aufschrift "FAIL - Anwendung unter Kontextpfad/Königreiche konnten nicht gestartet werden".

was mache ich falsch? Wie kann ich das beheben?

14
David

das Kriegsarchiv ist beschädigt oder ungültig.

vergewissern Sie sich, dass das War-Generierungsverfahren nicht fehlschlägt und dass die War-Datei vor dem Kopieren auf den USB-Stick usw. eine gültige ZIP-Datei ist.

wenn Sie unter Windows sind, können Sie dies tun, indem Sie die Dateierweiterung in .Zip ändern und mit einem Zip-Programm wie Winzip oder Winrar öffnen.

wenn Sie ein anderes Betriebssystem verwenden, müssen Sie die Erweiterung wahrscheinlich nicht ändern.

wenn es sich bei dem Krieg um einen gültigen Zip handelt, wird er wahrscheinlich aufgrund eines Übertragungsvorgangs beschädigt, dh auf oder von Ihrem USB-Stick.

14
pstanton

Es könnte ein Dateischutzproblem sein, das Sie beheben können, indem Sie Folgendes ausgeben: Chmod 755 webapp.war

es ist mir passiert, dass mein Sftp nur eine 700 auf die übertragene Datei schlug, was zu diesem Fehler führte.

10
Helmut

Dies kann auf einen der folgenden Gründe zurückzuführen sein.

  • Beschädigte WAR-Datei 
  • Beschädigte JAR-Dateien im Ordner WEB-INF/lib
10
Ratna Dinakar

haben den gleichen Fehler - mit war alles ok, Tomcat-Problem wurde neu gestartet. Ich denke, es ist deshalb so, weil Tomcat Krieg bereitstellt, bevor es vollständig hochgeladen ist

2
Ivan

Ich hatte das gleiche Problem, und das Wiederherstellen/Hochladen des Krieges konnte das Problem NICHT beheben. Am Ende habe ich den Krieg unter einem anderen Namen hochgeladen und den Krieg umbenannt, nachdem er erfolgreich eingesetzt worden war. Ein bisschen seltsam, dass dies funktionieren würde, aber es war eine bessere Lösung für mich, als Tomcat neu zu starten.

1
CullenJ

In meinem Fall war es die Manifestdatei.

Class-Path: 

sollte von einem Whitespace gefolgt werden.

0
czupe

Achten Sie auch auf die Dateiberechtigungen der von Ihnen bereitgestellten WAR-Datei. Für mich war das die Ursache.

0
302Found

möglicherweise auch aufgrund eines falschen Eintrags in solr.xml Es muss darauf verweisen, wo sich die .war-Datei befindet.

0
Ian

Als erstes müssen Sie überprüfen, ob Sie freien Speicherplatz auf Ihrer Festplatte haben. Wenn Ihre Partition zu 100% belegt ist, können Sie die .WAR-Datei nicht extrahieren.

0
kazy