-
1. Re: obtain client ip address in ejb web service endpoint
cripgrm Nov 29, 2007 4:32 PM (in response to cripgrm)I finally figured out how to do this.
Environment is JBoss 4.2.0 GA and JBossws 1.2
Code:
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.WebServiceContext;
import org.jboss.ws.core.CommonMessageContext;
import org.jboss.ws.core.jaxws.WebServiceContextEJB;
import org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS;
import org.jboss.ws.core.soap.MessageContextAssociation;
@Resource
EJBContext ejbContext;
@Resource
WebServiceContext wsContext;
@WebMethod
public void someMethod()
{
if (wsContext == null)
{
log.debug("WebServiceContext not injected");
CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
wsContext = new WebServiceContextEJB((SOAPMessageContextJAXWS)msgContext, ejbContext);
}
SOAPMessageContextJAXWS jaxwsContext = (SOAPMessageContextJAXWS)wsContext.getMessageContext();
HttpServletRequest hRequest = (HttpServletRequest)jaxwsContext.get(MessageContext.SERVLET_REQUEST);
log.debug("Client IP = " + hRequest.getRemoteAddr());
.....................
.........
}