我正在编写(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。
答案 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();
// ...
}
}