0

所以我的情况有点奇怪,因为我正在查看一个无法访问源代码的服务器。到目前为止,关于 servlet 的一切都运行良好,但是出现了一个突然的、自发的错误,该错误与 Java servlet 之一具有空指针异常有关。

这是错误日志:

INFO: Added header: Cache-Control: no transform
8-Apr-2014 10:57:16 AM org.apache.catalina.core.ApplicationContext log
INFO: Added header: Cache-Control: no cache
8-Apr-2014 10:57:16 AM org.apache.catalina.core.ApplicationContext log
INFO: Attempted context: null
8-Apr-2014 10:57:16 AM org.apache.catalina.core.ApplicationContext log
INFO: Request URI: /public_stage//def.jsp
8-Apr-2014 10:57:16 AM org.apache.catalina.core.ApplicationContext log
INFO: Real path:  /opt/apps/tomjet/webapps/public_stage/def.jsp
8-Apr-2014 10:57:16 AM org.apache.catalina.core.ApplicationContext log
INFO: servlet context: null
8-Apr-2014 1:35:02 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet PushServletMAG threw exception
java.lang.NullPointerException
        at com.openwave.wappush.Pusher.netSendRequest(Pusher.java:312)
        at com.openwave.wappush.Pusher.send(Pusher.java:230)
        at ca.test.servlet.ExtendedPush.pushServiceIndication(ExtendedPush.java:105)
        at ca.test.servlet.CDMAPushServlet.doPost(CDMAPushServlet.java:180)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:419)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:619)

但是转到 catalina 文件,我注意到它指出在几个位置,它正在尝试验证 .jar 文件,并且 WEB-INF/lib 目录中没有加载 servlet.jar 文件。

这是具有特定位置的线的示例:

8-Apr-2014 2:02:00 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/opt/apps/tomjet/webapps/wapMIG/WEB-INF/lib/servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

总的来说,我对这个问题感到非常困惑,因为就用户与源代码的交互而言,绝对没有,因为没有人可以访问它。这一切来得如此突然和自发。

有什么想法/资料可以帮助我解决这个问题吗?非常感激。

4

1 回答 1

0

错误是您的 WEB-INF/文件夹中的 jar servlet-api.jar,容器提供了 servlet-api.jar 并导致部署问题,您需要从 lib 文件夹中删除此 jar。你可能需要这个 jar 来编译你的项目,所以你必须配置项目以在你的 IDE 中使用这个 jar,在 eclipse 中你可以将它作为外部 jar 添加到 Java 构建路径中,但我建议你启用 Web 动态项目Facet 并将 tomcat 配置为您的运行时环境。(项目 -> 属性 -> 项目方面)

于 2014-04-08T20:36:00.697 回答