web-dev-qa-db-ja.com

.WARをTomcatにデプロイする際の問題

tomcatへのwarファイルのデプロイに問題があります。

私は私のWindowsマシンのnetbeansでwebappを書きました。それはすべてうまくいきます。サーバーとして機能しているLinuxコンピューターにアプリケーションを展開します。アプリケーションがビルドされたら、warファイルをプロジェクトディレクトリのdistフォルダーからペンドライブにコピーします。次に、これをLinuxコンピューターのデスクトップにコピーします。

次に、Tomcatを起動し、アプリケーションマネージャーを使用して、デプロイするwarファイルを参照し、[デプロイ]をクリックします。ブラウザの上部に「OK」というメッセージが表示されます。ターミナルウィンドウでTomcatの出力を確認すると、次のエラーが発生します。

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

また、アプリケーションリスト、私のアプリで確認できます。アプリのコマンドで[開始]をクリックしても、画面上部に「失敗-コンテキストパスのアプリケーション/ Kingdomsを開始できませんでした」というメッセージが表示される

何がいけないの?これを修正する方法?

14
David

warアーカイブが破損しているか無効です。

ペンドライブなどにコピーする前に、war生成手順が失敗していないこと、およびwarファイルが有効なZipファイルであることを確認してください。

windowsを使用している場合は、ファイル拡張子を.Zipに変更し、winzipやwinrarなどのZipプログラムで開くことでこれを行うことができます。

別のオペレーティングシステムを使用している場合は、おそらく拡張子を変更する必要はありません。

戦争が有効なZipである場合、転送プロセスの結果、つまりペンドライブへの書き込みまたはペンドライブからの破損の結果、破損している可能性があります。

14
pstanton

これはファイル保護の問題である可能性があります。chmod755 webapp.warなどを発行して修正できます。

たまたま私のsftpが転送されたファイルに700を平手打ちし、そのエラーを引き起こした。

10
Helmut

これは、次のいずれかの理由が原因である可能性があります。

  • 破損したWARファイル
  • WEB-INF/libフォルダーの下の破損したJARファイル
10
Ratna Dinakar

最初に確認することは、ディスクに空き容量があるかどうかです。パーティションが100%いっぱいになると、.WARファイルを抽出できなくなります。

2
kazy

同じエラーが発生しました-warで問題なく、Tomcatを再起動すると問題が解決するので、Tomcatが完全にアップロードされる前にwarの展開を開始するためです

2
Ivan

私にも同じ問題があり、戦争を再構築/アップロードしても問題は解決しませんでした。修正するために結局行ったのは、戦争を別の名前でアップロードし、展開に成功したら戦争の名前を変更することでした。これが機能することは少し奇妙ですが、Tomcatを再起動するよりも私にとっては良い解決策でした。

1
CullenJ

私の場合、それはマニフェストファイルでした。

Class-Path: 

空白が後に続きます。

0
czupe

デプロイした.warファイルのファイル権限も確認してください。私にとってそれは原因でした。

0
302Found

また、solr.xmlのエントリが正しくないことが原因である可能性もあります。これは、.warファイルの場所を指している必要があります。

0
Ian