调试Java servlet中的init()方法

时间:2014-03-25 07:03:04

标签: java tomcat servlets

根据我对Tomcat服务器工作原理的了解,如果您的Web应用程序中有Java servlet,则只要服务器启动就会调用init()方法。

在这种情况下,我该如何调试init()方法?明确地设置一个断点并不起作用,并且由于某种原因,System.out.println语句也不会在我的服务器控制台上产生任何输出。

我已检查是否部署了正确的网络应用程序(.war),并在Tomcat服务器的webapps文件夹中正确提取。

2 个答案:

答案 0 :(得分:5)

在我看来,您的部署描述符servlet声明的load-on-startup值不大于0.如果省略了该元素,Servlet只会在容器中初始化认为它应该处理一个请求。在此之前,不会调用init方法。

提供load-on-startup值,如此

 <servlet>
    <servlet-name>servlet</servlet-name>
    <servlet-class>com.example.YourServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

您告诉容器立即初始化Servlet,因此在启动时调用init方法,而不是在第一次请求该servlet到达时。

答案 1 :(得分:1)

这是不正确的,服务器启动时不会调用init()方法。 它只被调用一次,它在同一个init()方法所属的第一次调用你的服务器期间被调用。

由于每个Serlvet都有一个init(),因此在第一次调用servlet时会调用各个servlet的init()。即在容器加载servlet并实例化之后,调用init()方法。

要么,

  • 在web.xml中为servlet启动时加载
  • 给serlvet打电话(第一次打电话后你应该在控制台看到println语句)