根据我对Tomcat服务器工作原理的了解,如果您的Web应用程序中有Java servlet,则只要服务器启动就会调用init()
方法。
在这种情况下,我该如何调试init()
方法?明确地设置一个断点并不起作用,并且由于某种原因,System.out.println
语句也不会在我的服务器控制台上产生任何输出。
我已检查是否部署了正确的网络应用程序(.war
),并在Tomcat服务器的webapps
文件夹中正确提取。
答案 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()方法。
要么,