2010-06-11 32 views
1

我有一個使用CXF的java web服務客戶端。服務器有10多個可能的ips,它們通過動態DNS解析。我有jvm正確配置不緩存dns。記錄在CXF中解析的主機名稱

我的問題是,我有要求,我需要登錄到客戶端的有效載荷與它交付的IP。只記錄主機名將不起作用,因爲主機名到IP分辨率不斷變化。

回答

1

我建議從抓住CXF LoggingInInterceptor來源: http://svn.apache.org/repos/asf/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java

和更新,以適合您的需求。特別是,您需要從消息中獲取HttpServletRequest並找出如何從其中添加IP來添加到日誌中。 CXF版本是協議不可知的(可用於JMS或其他),因此不會執行任何需要HttpServletRequest的HTTP特定事情。

+0

這將在服務器端,但我需要在客戶端。我的問題沒有說清楚,所以我已經更新了我的問題以反映這一點。對困惑感到抱歉! – 2010-06-11 19:46:25

+0

它基本上是相同的答案,但抓住LoggingOutInterceptor的代碼,並從消息中抓取HttpURLConnection的東西,並抓住你可以從中得到什麼。 – 2010-06-15 13:17:04

+1

我最終得到了HttpURLConnection,然後使用了反射訪問私有/受保護的成員以獲取InetAddress對象。 HttpURLConnection httpUrlConnection =(HttpURLConnection)message.get(「http.connection」); 使用反射此... httpUrlConnection.delegate.http.serverSocket.inetAddress 感謝您的幫助! – 2010-06-24 15:33:23