我正在尝试获取JAX-WS SOAP Web服务的客户端的IP地址(感谢另一种解决方案)。
我正在使用以下代码,它适用于另一个项目,但是当我从javax.xml.ws获取它时,这个项目(与Spring 3.2.4集成)返回null HttpServletRequest 。 WebServiceContext (WebServiceContext 非空):
@Resource
WebServiceContext wsContext;
private String getRemoteIpAddress()
{
MessageContext context = this.wsContext.getMessageContext();
HttpServletRequest httpRequest = (HttpServletRequest) context.get(MessageContext.SERVLET_REQUEST);
String remoteIpAddress = httpRequest.getRemoteAddr();
为了进一步说明,这个Web Service类看起来像:
@WebService(name = "PService", targetNamespace = "http://server.ps/")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class PSystemServiceEndpoint extends SpringBeanAutowiringSupport
需要注意的是,该应用程序作为独立Java应用程序运行,并包含 Jetty Embeeded Server 。
答案 0 :(得分:0)
我也使用Spring WS,当我需要从远程客户端获取IP时,我使用此函数
Mail::send('emails.support', $request->all(), function($message) use ($data)
正如您所看到的,我不使用private String getIpRequest(){
String result = "none";
TransportContext context = TransportContextHolder.getTransportContext();
if(context != null){
HttpServletConnection connection = (HttpServletConnection)context.getConnection();
if(connection != null){
HttpServletRequest request = connection.getHttpServletRequest();
if(request != null){
result = request.getRemoteAddr();
}
}
}
return result;
}
,而是使用WebServiceContext
,因此我不确定此代码是否适合您,但我希望它有所帮助。