2010-06-11 27 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