我在tomcat 7下部署了我的WebServices,没有问题。
由于我试图在tomcat 8下安装一个新的WebServices实例。
它只是返回空白页。
这是我在试图启动服务器时获得的catalina错误日志:
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请告知我这些错误信息。谢谢维克
用日志更新
[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]发布于 2016-06-30 06:06:52
最可能的原因是,您已经在WAR中打包了API的旧版本(tomcat应该忽略它),或者您将该版本放在tomcat/lib中。
您可以通过运行tomcat并加载详细的类来识别违规的JAR。这可以通过向JVM参数中添加-verbose:class来实现。通过将它添加到env变量JAVA_OPTS中,可以将其添加到那里:
export JAVA_OPTS=-verbose:classset JAVA_OPTS=-verbose:class然后,当您启动tomcat时,您将获得许多类似于以下内容的输出:
[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]然后找到正在加载的servlet上下文从哪个jar中加载,如果它不是来自tomcat或修复它的版本,则删除它。
发布于 2016-06-30 03:50:16
信息是
NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;这意味着您根据包含此方法的servlet库版本编译了代码,但是您部署WAR文件的服务器正在运行一个(可能更早的)版本,该版本不包含此方法。
确保在构建环境和部署环境中都使用相同的API版本。
发布于 2016-06-30 06:14:44
您必须用支持tomcat 8的最新jars更新旧jars,例如,一些th restfull只支持tomcat 7,而不是支持8,所以您必须将lates罐子放在
泽西岛1.7支持tomcat 7及以下
https://stackoverflow.com/questions/38113544
复制相似问题