2014-02-18 116 views
2

假設我有一個Java服務器應用程序,我不明白。我想知道的請求處理的整個執行順序(見下面的例子)如何將跟蹤添加到Java服務器應用程序

 
received HttpRerquest 12345 from client (...) with headers (...) and body (...) 
enter WebUserController with HttpRequest 12345 
enter UserProcessor.process1 with HttpRequest 12345 
enter UserProcessor.process2 with createUserRequest(userName=..., userEmail=..., ...) 
enter userDAO.createUser with User(userName=..., userEmail=..., ...) 
invoke SQL statement (...) against database (...) in <host>::<port> 
exit userDAO.createUser with result (...) 
exit UserProcessor.process2 with (...) 
exit UserProcessor.process1 with (...) 
exit WebUserController with ... 
sent HttpResponse 7890 to client (...) with headers (...) and body (...) 

我知道大約只有一種方式來獲得它:添加跟蹤調用應用程序代碼手動。現在我想知道是否有一個自動的方式來添加這些跟蹤調用的代碼。我正在考慮字節儀器,它會將跟蹤調用添加到給定jar中的所有公共類的所有公共類。是否有意義 ?

您能否建議其他方式來了解應用程序的工作原理?

+1

您絕對應該查看面向方面的編程(http://en.wikipedia.org/wiki/Aspect-oriented_programming)。 – Smutje

+0

@Smutje - 你還應該手動添加方面嗎? –

+0

我不知道你在問這樣的工具,但不能使用伐木工?可能在應用程序中的關鍵點上已經有記錄器,並且您只需增加日誌記錄級別即可查看其消息? –

回答

1

如果是開發服務器,也可以嘗試將IDE連接到服務器的調試端口。這樣,您可以從設置斷點的位置逐行按照代碼進行操作。

如果您正在討論接受服務器或生產服務器,那麼這絕對是一個禁忌,因爲您阻止所有其他線程執行有問題的代碼。

如果您需要記錄每條語句,那麼AOP將成爲Smutje所述的最好的朋友。

1

您可以嘗試Jackplay,該設計用於在不編碼或重新部署的情況下啓用跟蹤。

它將Web UI作爲您的控制面板來跟蹤或撤銷對方法的跟蹤。

它還允許您重新定義JVM中的方法體Live。

相關問題