gpt4 book ai didi

java - Tomcat7/Jackson/WebApp部署崩溃/

转载 作者:行者123 更新时间:2023-11-30 11:35:03 25 4
gpt4 key购买 nike

我正在尝试在运行 Tomcat 7.0.26 的 Ubuntu 服务器 (12.04) 上部署我的网络应用程序的新版本。我没有包含我使用的 jackson- 库(-core-annotations-databind),而是试图将它们放在一起在 /usr/share/tomcat7/lib 区域中,供我计划部署的其他应用程序使用。

我可以启动服务器,并部署我的应用程序。但是,一旦我这样做,应用程序就会崩溃并关闭 Tomcat。显然 ObjectMapper 没有被正确加载,但它存在于数据绑定(bind) jar 文件中(我已经 jar tvf 对其进行了检查)...

给客户端的响应是:

HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:679)

并且,catalina.out 日志文件在应用程序执行后显示以下内容:

Mar 11, 2013 1:42:55 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Mar 11, 2013 1:42:55 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Mar 11, 2013 1:42:57 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
Mar 11, 2013 1:42:57 AM org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already. Could not load com.fasterxml.jackson.databind.ObjectMapper. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1587)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
at org.comtor.authserv.APIServer.doPost(APIServer.java:150)
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:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
Mar 11, 2013 1:42:57 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]

在此感谢任何帮助。我正在尝试了解出了什么问题,如何防止它发生,以及如何防止服务器在执行 Web 应用程序时发生故障(崩溃)。

谢谢。

最佳答案

我在 Jersey REST 库中遇到了类似的问题。结果是 Tomcat 使我的应用程序崩溃,因为我包含在我的 WAR 文件中的一些 jar 和我移动到 Tomcat 的 lib 文件夹的 jar 之间存在版本冲突。

我建议您首先在本地开发机器上解决此问题,因为移动 jar 文件更快更容易。从 Tomcat 附带的库开始,并将所有需要的库打包到您的 war 文件中。您的应用程序应该运行良好。然后将 jar 文件从您的应用程序移动到 Tomcat 库。您可以在不重新构建应用程序的情况下执行此操作。只需使用 7-zip 等解压缩实用程序打开您的 war 文件,并在将它们移动到 Tomcat/lib 时从 war 文件中删除这些文件。您可能每次都需要重新启动 Tomcat,但我发现以这种方式获得工作配置并不需要很长时间。现在我的 war 文件只有 735KB 而不是 8MB,这对我来说很重要,因为我的上传速度很慢。

关于java - Tomcat7/Jackson/WebApp部署崩溃/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com