在我的网络应用程序的web.xml中,我已将服务器配置如下:
<servlet>
<servlet-name>SOS</servlet-name>
<servlet-class>cn.SOS</servlet-class>
<init-param>
<param-name>configFile</param-name>
<param-value>/WEB-INF/conf/sos.config</param-value>
</init-param>
<init-param>
<param-name>dbConfigFile</param-name>
<param-value>/WEB-INF/conf/dssos.config</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SOS</servlet-name>
<url-pattern>/sos</url-pattern>
</servlet-mapping>
然而,当我请求这个servlet时,我收到一个错误,告诉我“Servlet SOS不可用”,但我确信这个servlet确实存在于WEB-INFO / lib / sos.jar中。 我已经从日志中看到了servlet下的初始化工作。 我想知道为什么tomcat找不到servlet?
答案 0 :(得分:1)
简而言之:
HttpServlet SOS = new cn.SOS();
SOS.init(servletConfig);
SOS.init();
失败了。
阅读appserver日志以查找原因并根据异常和堆栈跟踪相应地修复问题。如果您在日志中找不到任何内容,则很可能在登录期间出现故障。记录器是否正确配置?
另一个原因也可能是您正在查找错误的日志。在Tomcat中,未恢复的异常通常记录到stderr,并且通常不会与stdout在同一个日志文件中。更重要的是,它完全取决于日志记录配置。
我会说:如果你真的无法自行解决日志问题,请运行一个调试器。
答案 1 :(得分:0)
这不仅仅是关于web.xml中的条目。服务请求时,Servlet实例应该可用。由于某些异常,大多数情况下您的servlet实例可能不可用。检查您的日志文件以找到更多线索。
还要查看servlet的init方法代码。大部分操作可能都失败了。