JWS - 在调用Web服务时检索IP地址

时间:2016-03-22 09:10:33

标签: java web-services jax-ws

我正在编写(Java 6)一个简单的Web服务,通​​过实现这样的接口:

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style = Style.RPC)
public interface MyWebService {
    @WebMethod
    String helloWorld();
}

所以,我的具体课程如下:

import javax.jws.WebService;

@WebService(endpointInterface="xxx", 
            portName="yyy", 
            serviceName="zzz")
public class MyConcreteWS implements MyWebService {
    @Override
    public String helloWorld() {
        // ...
    }
}

现在,在方法 helloWorld()中如何检索有关调用者的任何信息,例如ip地址?

我不是在开发一个servlet,它只是一个带有 main 方法的简单jar。

1 个答案:

答案 0 :(得分:0)

不确定这是否适用于您的情况,但您可以尝试注入资源WebServiceContext并使用它来获取IP。

public class MyConcreteWS implements MyWebService {
   @Resource WebServiceContext wsContext;  

   @Override
    public String helloWorld() {
        MessageContext mc = wsContext.getMessageContext();  
        HttpServletRequest req = (HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST);  
        String ip = req.getRemoteAddr(); 
        // ...
    }
}