在Apaceh XML-RPC获取客户端的ip


在项目中使用Apache XML-RPC时,有时候需要获得客户端的ip,以便于记录日志等,由于官方没有提供相应的方法,也没有对其做实现,所以需要手工修改源码来实现该功能。XML-RPC本身是一个Servlet,所以要获得调用者ip,可以在Servlet的调用入口处doGet或doPost方法中获取,获取到以后还需要将其存储起来,并提供一个接口供外部调用,可以考虑用ThreadLocal来存储,并提供一个public static的方法供外部调用获取ip。

具体实现方法:

下载与当前版本对应的源码,并将源码拷贝到项目src下面,同时删除lib下相应的jar包,最新的版本是3.1.3,下载地址是:http://labs.renren.com/apache-mirror//ws/xmlrpc/apache-xmlrpc-current-src.zip

修改源码:

找到org.apache.xmlrpc.webserver包下面的XmlRpcServlet类,在该类里面添加私有变量


和供外部调用的接口

在doPost方法里面,添加获取并设置ip的语句clientIpAddress.set(pRequest.getRemoteAddr());


至此,就完成了,外部可通过调用XmlRpcServlet.getClientIpAddress()方法来获取IP了

附修改后的源码,版本不同可能有细微差异:


你可能感兴趣的:(xml)