2014-03-25 88 views
2

從我知道如何Tomcat服務器的作品,是,如果你在你的web應用程序有一個Java servlet,每當服務器啓動的init()方法被調用。調試init()方法在一個Java servlet

在這種情況下,我怎麼能調試init()方法?把一個破發點顯然是不行的,而由於某種原因System.out.println報表也不會產生我的服務器控制檯上的任何輸出。

我檢查了部署了正確的web應用程序(.war),並且它在我的Tomcat服務器的webapps文件夾中正確提取。

+0

斷點和'的println ()'方法應該工作。你可以發佈一些代碼嗎? –

+0

@Sotirios Delimanolis回答了這個問題。 – wrahool

+0

我把你的語句表示爲即使在初始化servlet時,斷點在'init()'方法上也不起作用。是Sotirios的解決方案應該做的。 –

回答

5

在我看來你的部署描述符servlet聲明沒有大於0的load-on-startup值。如果你省略了那個元素,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

這是不正確的,在init()方法是調用時服務器startsup。 它被稱爲僅一次,它是第一次調用到Servlet了相同init()方法屬於期間調用。

至於有一個的init()每個的Serlvet時,init()進行相應的Servlet時調用首次在servlet調用。即在容器加載servlet並實例化之後,調用init()方法。

要麼,在啓動時

  • 負載在web.xml的servlet爲
  • 給調用的serlvet(後第一個打電話給你應該看到控制檯println語句,)
相關問題