2016-06-30 23 views
0

tomcat 7の下に問題なくWebサービスをデプロイしました。Tomcat 8のデプロイ後にWebサービスを開始できません

私はTomcatの8 の下でWebサービスの新しいインスタンスをインストールしようとしたので、Webアプリケーションが配備されているいくつかの問題を抱えているように見えるが、私はしようとすると: http://locahost:8080/VICWebServices

それはちょうど空白のページを返します。

これは、サーバを起動しようとしているとき、私は取得していますカタリナ・エラー・ログです:

30-Jun-2016 10:56:27.149 SEVERE [localhost-startStop-1] 
org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component  [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/VICWebServices]] 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:587) 
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1798) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String; 
at org.apache.tomcat.websocket.server.WsServerContainer.<init>(WsServerContainer.java:150) 
at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131) 
at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5292) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 

30-Jun-2016 10:56:27.149 SEVERE [localhost-startStop-1]  org.apache.catalina.startup.HostConfig.deployDescriptor Error deploying configuration descriptor C:\apache-tomcat-8.0.36-AWS-VIC-PROD-2\conf\Catalina\localhost\VICWebServices.xml 
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/VICWebServices]] 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:587) 
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1798) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

30-Jun-2016 10:56:27.150 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor C:\apache-tomcat-8.0.36-AWS-VIC-PROD-2\conf\Catalina\localhost\VICWebServices.xml has finished in 21,855 ms 
30-Jun-2016 10:56:27.152 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8280"] 
30-Jun-2016 10:56:27.162 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-apr-8209"] 
30-Jun-2016 10:56:27.166 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 21903 ms 

これらのエラーメッセージで私に助言してください。 -verboseと おかげ ヴィック

UPDATE:メッセージが

NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String; 

あるクラスログ

[Loaded javax.servlet.ServletContext from C:\apache-tomcat-8.0.36-AWS-VIC-PROD-2\endorsed\servlet-api.jar] 
[Loaded javax.servlet.ServletContextAttributeListener from C:\apache-tomcat-8.0.36-AWS-VIC-PROD-2\endorsed\servlet-api.jar] 
[Loaded javax.servlet.ServletContextListener from C:\apache-tomcat-8.0.36-AWS-VIC-PROD-2\endorsed\servlet-api.jar] 
[Loaded com.sun.xml.ws.transport.http.servlet.WSServletContextListener from C:\apache-tomcat-8.0.36-AWS-VIC-PROD-2\endorsed\webservices-rt.jar] 
[Loaded javax.servlet.ServletContextEvent from C:\apache-tomcat-8.0.36-AWS-VIC-PROD-2\endorsed\servlet-api.jar] 
[Loaded javax.servlet.ServletContextAttributeEvent from C:\apache-tomcat-8.0.36-AWS-VIC-PROD-2\endorsed\servlet-api.jar] 
+0

デバッグのヘルプを求める質問(** "なぜこのコードは動作しませんか?")**は必要な動作*、*特定の問題またはエラー*および*それを再現するために必要な最短コード* **質問自体に**。 **明確な問題文**のない質問は他の読者には役に立たない。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) –

+0

おそらく関連性があります:http://stackoverflow.com/questions/34950164/getting-nosuchmethoderrorjavax-servlet-servletcontext-getvirtualservername –

+0

サーブレットサーブレットが提供されているようです。 'javax.servlet.ServletContext.getVirtualServerName()'はapi 7のServletContextに存在しますが、API 6には存在しません –

答えて

0

最も可能性の高い原因は、古いバージョンのAPIをWARにパッケージ化したことです(tomcatは無視する必要があります)か、tomcat/libにそのバージョンを置いたことが原因です。

Tomcatを冗長なクラスローディングで実行することで、問題のあるJARを特定できます。これは、-verbose:classをJVM引数に追加することで実行できます。 Tomcatを起動したときに次に、あなたがの多くを得るでしょうset JAVA_OPTS=-verbose:class

:Windows上export JAVA_OPTS=-verbose:class

  • :Linux上

    • :あなたはENVに変数JAVA_OPTSを、それを追加することによって、そこにそれを追加することができます以下のような出力:

      [Loaded javax.websocket.server.ServerEndpointConfig$Builder from file:/C:/Users/xxx/Downloads/software/apache-tomcat-8.0.36/apache-tomcat-8.0.36/lib/websocket-api.jar] 
      [Loaded javax.websocket.server.ServerEndpointConfig from file:/C:/Users/xxx/Downloads/software/apache-tomcat-8.0.36/apache-tomcat-8.0.36/lib/websocket-api.jar] 
      [Loaded org.apache.tomcat.websocket.server.DefaultServerEndpointConfigurator from file:/C:/Users/xxx/Downloads/software/apache-tomcat-8.0.36/apache-tomcat-8.0.36/lib/tomcat- 
      [Loaded javax.websocket.server.DefaultServerEndpointConfig from file:/C:/Users/xxx/Downloads/software/apache-tomcat-8.0.36/apache-tomcat-8.0.36/lib/websocket-api.jar] 
      [Loaded org.apache.tomcat.websocket.pojo.PojoMethodMapping from file:/C:/Users/xxx/Downloads/software/apache-tomcat-8.0.36/apache-tomcat-8.0.36/lib/tomcat-websocket.jar] 
      

      はその後、サーブレット・コンテキストがロードされているjarファイルから見つけると、それはTomcatのから来ていない場合、それを削除するか、バージョンそれを修正します。

  • +0

    Tomcat/lib foldはインストールされて以来同じままですが、それは実際のWARファイルからの問題であり、新しいバージョンのAPIで再コンパイルする必要があるのでしょうか? – Vic

    +0

    問題は、JVMが古いバージョンのAPIを読み込んでいるためです。私の答えで、犯人を見つけるために言ったことをしてください。 –

    +0

    verbose:class logをすべてのservletcontext関連の行で更新しました。問題はこれらのファイルによって引き起こされたと言いますか? – Vic

    0

    これはそのサーブレットライブラリのバージョンに対してコードをコンパイルした意味このメソッドが含まれていますが、WARファイルをデプロイしたサーバーでは、(おそらく以前のバージョンの)その方法。

    ビルド環境とデプロイメント環境の両方で同じAPIバージョンを使用していることを確認してください。

    +0

    既存のWebService.warファイルを変更する必要がないこの問題に対する解決策はありますか? – Vic

    +0

    新しいバージョンのサーブレットコンテナをサーバーに展開する必要がある可能性があります。どのアプリケーションサーバーとどのバージョンがサーバーにあり、どのバージョンをコンパイルしましたか? –

    +0

    tomcat 8.0.36はWebコンテナですか?申し訳ありませんが、私はすべての用語と少し混同しています。 – Vic

    0

    は、あなたがサポートしているたとえば番目restfullのAPIのいくつかのTomcat 8 をサポートする最新のjarファイルと古いjarファイルを更新する必要が唯一のTomcat 7ではないではない8 だからあなたはlatesを配置する必要がjarファイル

    ジャージー1.7は、Tomcat 7をサポートしています以下のようにしてください

    +0

    あなたはどの瓶を参照していますか? webappのwarファイルやtomcatのlib内のJAR? – Vic

    +0

    あなたのプロジェクトの一部の図書館が更新を必要としていることを確認してください。 –

    +0

    私は詳細を更新しました:class log、見てください。 – Vic

    関連する問題