2012-09-24 24 views
4

這聽起來有點太天真了,但在服務器啓動過程中,我總是要花很長時間來調試java類。這裏是場景:在啓動時調試java應用程序

  • java應用程序託管在tomcat服務器上。
  • 假設有一個類在tomcat服務器啓動時被調用。
  • 只要我停止tomcat實例以重新啓動,eclipse調試就會停止,只有在應用程序啓動並運行後,我才能啓動調試。
  • 現在我該如何在eclipse上調試這個類?

感謝您的幫助提前。

+0

在您的類中放置一箇中斷點,並確保在調試模式下啓動服務器。 –

+0

我也這麼做。但是爲了在eclipse上啓動調試,服務器應該正常運行,對吧?在那之前,當我單擊調試符號時,它會引發錯誤。當它開始工作的時候,這個類已經被調用了,我錯過了它。 – rajugaadu

回答

2

在啓動過程中調試類應該沒有問題。例如,假設你實現了一個ServletContextListener class。所屬contextInitialized方法在Tomcat啓動期間被調用(或者更確切地說:當您的應用程序被部署時)。

您可以在此類中設置斷點。此時,Tomcat已經完全啓動,調試時不應該有任何問題。

+0

嘿Sebi, 我可以肯定地設置斷點。但是爲了使斷點工作,我的eclipse上的調試應該運行......而我的問題是調試不會在我的eclipse上運行,直到服務器完全啓動並運行。 – rajugaadu

+0

嘗試使用遠程調試的eclipse啓動的外部服務器。您可以在部署應用程序之前啓動該服務器。之後,您可以在已經連接到服務器的情況下通過eclipse部署應用程序。如果您的斷點仍然被忽略,請先嚐試一個簡單的測試應用程序。 – Sebi

+0

我通常不會通過eclipse啓動我的服務器。我啓動tomcat服務器(當然是自定義啓動腳本),然後使用localhost和調試端口號掛接eclipse調試選項。 – rajugaadu

10

您需要將「等待調試器連接」標誌傳遞給tomcat。因此,創業公司會一直等到您連接後,您就不會錯過這個斷點。

就拿那些Java選項,就是讓Tomcat監聽調試器:

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8797,server=y,suspend=y 

的等待調試器連接標誌在上述行suspend=y條目。

相關問題