Salut,HttpServletRequest.getRemoteAddr() la mise en œuvre sur Weblogic 9.2.3 en utilisant JAX-RPC
Je suis nouvelle dans la mise en œuvre Weblogic WebService. Essayer d'obtenir l'adresse distante du client à partir du message SOAP en utilisant JAX-RPC. Nécessité d'obtenir l'adresse IP distante du client à partir de l'en-tête du message SOAP. J'ai essayé de nombreuses solutions selon la documentation BEA/Oracle. WebService fichier java:
@WebService
public class clientsIPWs {
@Control
private SoapMessageControl smc;
@WebMethod
@WebResult(name="return")
public String getClientAddress() {
return smc.getRemoteAddress();
}
}
SoapMessageControl.java
@ControlInterface
public interface SoapMessageControl {
public String getRemoteAddress();
}
SoapMessageControlImpl.java
@ControlImplementation
public class SoapMessageControlImpl implements SoapMessageControl, Serializable {
private static final long serialVersionUID = 1L;
@Context
private SOAPMessageContext smc;
@WebMethod()
public String getRemoteAddress() {
HttpServletRequest request =
(HttpServletRequest) smc.getProperty("transport.http.servletRequest");
return request.getRemoteAddr();
}
}
Dans le dernier a essayé de nombreuses variantes avec @Context comme MessageContext/WebServiceContext (celui-ci est obsolète), mais chaque fois que le test a reçu une telle exception:
Impossible d'invoquer le composant d'extrémité Impossible d'invoquer la méthode java.lang.NullPointerException à controls.SoapMessageControlImpl.getRemoteAddress (SoapMessageControlImpl.java:33) à controls.SoapMessageControlBean.getRemoteAddress (SoapMessageControlBean.java:119) à services .CustProdWs.getClientAddress (CustProdWs.java:63) à sun.reflect.NativeMethodAccessorImpl.invoke0 (Méthode natif) à sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) à java.lang.reflect.Method.invoke (Method.java:585) à weblogic.wsee.component.pojo.JavaClassComponent.invoke (JavaClassComponent.java:99) à weblogic.wsee.ws.dispatch.server.ComponentHandler.handleRequest (ComponentHandler.java:64) à weblogic.wsee.handler. HandlerIterator.handleRequest (HandlerIterator.java:127) à weblogic.wsee.ws.dispatch.server.ServerDispatcher.dispatch (ServerDispatcher.java:85) à weblogic.wsee.ws.WsSkel.invoke (WsSkel.java:80) à weblogic.wsee.server.servlet.SoapProcessor.handlePost (SoapProcessor.java:66) à weblogic.wsee.server.servlet.SoapProcessor.process (SoapProcessor.java:44) à weblogic.wsee.server.servlet. BaseWSServlet $ AuthorizedInvoke.run (BaseWSServlet.java:181) at weblogic.wsee.server.servlet.BaseWSServlet.service (BaseWSServlet.java : 92) à javax.servlet.http.HttpServlet.service (HttpServlet.java:856) à weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run (StubSecurityHelper.java:227) à weblogic.servlet.internal.StubSecurityHelper .invokeServlet (StubSecurityHelper.java:125) à weblogic.servlet.internal.ServletStubImpl.execute (ServletStubImpl.java:283) à weblogic.servlet.internal.ServletStubImpl.execute (ServletStubImpl.java:175) à weblogic.servlet .internal.WebAppServletContext $ ServletInvocationAction.run (WebAppServletContext.java:3244) at weblogic.security.acl.internal.AuthenticatedSubject.doAs (AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs (SecurityManager.java : 121) à weblogic.servlet.internal.WebAppServletContext.securedExecute (WebAppServletContext.java:2010) à weblogic.servlet.internal.WebAppServletContext.execute (WebAppServletContext.java:1916) à weblogic.servlet.internal.ServletRequestImpl.run (ServletRequestImpl. java: 1366) à weblogic.work.ExecuteThread.execute (ExecuteThread.java: 209) à weblogic.work.ExecuteThread.run (ExecuteThread.java:181)
Google utilise presque toutes les solutions JAX-WS qui n'est pas disponible pour moi dans ce cadre. Merci.