2011-01-04 9 views
13

ho problemi con la distribuzione di un file di guerra su tomcat.problemi di distribuzione. WAR to tomcat

Ho scritto una webapp in netbeans sulla mia macchina Windows. funziona tutto bene quello che voglio fare è distribuire l'applicazione sul mio computer Linux che funge da server. una volta che l'applicazione è stata creata, copio il file war dalla cartella dist della mia directory di progetto su una pendrive. quindi lo copio sul desktop del mio computer Linux.

Quindi avvio tomcat e utilizzo il gestore applicazioni che esploro il file war da distribuire, quindi fare clic su deploy. ricevo un messaggio nella parte superiore del browser che dice "OK". ma se guardo la mia uscita Tomcat nella finestra del terminale ho il seguente errore:

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 

anche ora posso vedere nella lista delle applicazioni, la mia app. faccio clic su Inizia nei comandi per l'app, ma ricevo un messaggio nella parte superiore dello schermo che dice "FAIL - Applicazione al percorso di contesto/Kingdoms non può essere avviata"

cosa sto facendo di sbagliato? come risolvere questo?

+0

Nel mio caso stavo facendo 'jar xvf' per estrarre un file, aggiornarlo, quindi aggiornare WAR. Ma lo stavo facendo da una cartella sopra descritta come descritto in https://issues.apache.org/jira/browse/MTOMCAT-104 - una volta che ho cambiato la mia directory di lavoro in cui si trova WAR, ho risolto il problema. – Philippe

risposta

12

l'archivio guerra è danneggiato o non valido.

verifica che la procedura di generazione della guerra non sta fallendo e che il file guerra è un file zip valido prima della copia per il vostro pen drive, ecc

se siete su Windows è possibile farlo modificando il file estensione a .zip e apertura con un programma zip come winzip o winrar.

se si utilizza un altro sistema operativo, probabilmente non è necessario modificare l'estensione.

se la guerra è uno zip valido, probabilmente è corrotto a causa del processo di trasferimento, ovvero dall'accensione o dalla pen drive.

+0

ho trovato un file nella cartella lib che wouldnt budge. inoltre penso che il pendrive non ami i file di guerra, ne abbia provato un altro e ha funzionato. casuale. grazie – David

+0

potresti accettare una delle risposte dato che hanno entrambi ragione. – pstanton

+0

Si è imbattuto in questo con Eclipse, ricreare il progetto era l'unico rimedio che ho trovato, nonostante tutti i file di progetto sembravano essere corretti e più passaggi di pulizia/costruzione. –

10

Ciò potrebbe essere dovuto a uno dei seguenti motivi.

  • file WAR danneggiato
  • file JAR danneggiati sotto cartella WEB-INF/lib
+0

ho trovato un file nella cartella lib che wouldnt budge. inoltre penso che il pendrive non ami i file di guerra, ne abbia provato un altro e ha funzionato. casuale. grazie – David

10

Potrebbe essere un problema di protezione dei file, che è possibile risolvere mediante l'emissione di qualcosa di simile a: chmod 755 webapp.war

è successo a me che la mia SFTP sarebbe solo schiaffo un 700 sul file trasferito, causando che errore.

2

hanno lo stesso errore - con la guerra tutto ok, riavvio di Tomcat problema di risoluzione quindi penso che sia siccome Tomcat iniziare distribuire guerra prima che completamente caricato

+1

ah che avrebbe fatto un sacco di senso. se il file era grande e lo stavi copiando direttamente nel contenitore tomcat. penso che spiegherebbe il problema che ho avuto. wow, questo era secoli fa haha – David

1

Ho avuto lo stesso problema, e la ricostruzione/upload della guerra non stava riparando il problema. Quello che ho finito per rimediare è stato caricare la guerra con un nome diverso, rinominando la guerra una volta che è stata schierata con successo. Un po 'strano che questo avrebbe funzionato, ma per me è stata una soluzione migliore rispetto al riavvio di tomcat.

0

anche a causa di una voce errata in solr.xml Deve indicare dove si trova il file .war.

0

Se vuoi anche per i permessi dei file del file .war è stato distribuito. Per me quella era la causa.

0

Nel mio caso era il file manifest.

Class-Path: 

deve essere seguito da uno spazio bianco.

0

La prima cosa da verificare è se si dispone di spazio libero sul disco. Se la partizione è piena al 100%, sarà impossibile estrarre il file .WAR.