Java 我们可以使用ApacheCXF通过SOAP调用检索请求者的详细信息吗?

Java 我们可以使用ApacheCXF通过SOAP调用检索请求者的详细信息吗?,java,soap,cxf,Java,Soap,Cxf,我们在服务器上收到来自不同系统的SOAP请求。在发送响应之前,我们需要向请求系统发出一些新请求以获取一些详细信息。为此,我们需要确定请求服务器的详细信息。有没有办法确定: -请求系统VIP -请求者IP -其他特定于请求者的详细信息我假设Soap服务基于Http协议。您可以使用的getRemote。。。方法。但我不确定这些信息对你来说是否足够。另一个选项是要求客户机在其请求中包含所需的客户机信息。如果使用JAX-WSAPI,则可以使用来检索消息元数据。只需在实现中插入一个引用: @WebServ

我们在服务器上收到来自不同系统的SOAP请求。在发送响应之前,我们需要向请求系统发出一些新请求以获取一些详细信息。为此,我们需要确定请求服务器的详细信息。有没有办法确定: -请求系统VIP -请求者IP
-其他特定于请求者的详细信息

我假设Soap服务基于Http协议。您可以使用的getRemote。。。方法。但我不确定这些信息对你来说是否足够。另一个选项是要求客户机在其请求中包含所需的客户机信息。

如果使用JAX-WSAPI,则可以使用来检索消息元数据。只需在实现中插入一个引用:

@WebService(name = "MyService" /*...*/)
public class MyService {

    @Resource
    private WebServiceContext wsc;

    @WebMethod
    public MyResponse process(MyRequest request) {
        HttpServletRequest httpRequest = (HttpServletRequest) wsc.getMessageContext().get(MessageContext.SERVLET_REQUEST);

        httpRequest.getRemoteAddr(); // access some parameters...

        return new MyResponse();
    }

}

它允许您访问通过HTTP请求(如调用方地址)提供的“所有内容”。

您使用JAX-WS作为Web服务提供商?好的,因此我将保留我的答案仅供参考。我刚刚意识到CXF实现了JAX-WS API,因此我的答案可能是一个解决方案-取决于您的实现。顺便说一句:我稍微修改了你的问题。