Java 在处理程序(JAX-WS)上使用获取端点的Url

Java 在处理程序(JAX-WS)上使用获取端点的Url,java,jax-ws,java-metro-framework,Java,Jax Ws,Java Metro Framework,我正在使用一个公共处理程序类实现许多JAX-WSWeb服务,以验证传入SOAP消息的正确结构 是否有某种方法可以获取当前消息指向的URL,以便我可以从该URL自动获取架构并验证消息?找到 public class HeaderHandler implements SOAPHandler<SOAPMessageContext> { public boolean handleMessage(SOAPMessageContext smc) { System.out.println

我正在使用一个公共处理程序类实现许多JAX-WSWeb服务,以验证传入SOAP消息的正确结构

是否有某种方法可以获取当前消息指向的URL,以便我可以从该URL自动获取架构并验证消息?

找到

public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {

public boolean handleMessage(SOAPMessageContext smc) {
    System.out.println("URL of Endpoint" +smc.get(JAXWSProperties.HTTP_REQUEST_URL));
 }
}
公共类HeaderHandler实现SOAPHandler{
公共布尔handleMessage(SOAPMessageContext smc){
System.out.println(“端点的URL”+smc.get(JAXWSProperties.HTTP_请求_URL));
}
}

在我的应用程序中
smc.get(JAXWSProperties.HTTP\u REQUEST\u URL)
返回null。 我找到了另一种方法,我希望这有帮助:

public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {

    public boolean handleMessage(SOAPMessageContext smc) {
        String endpointAddress = (String) smc.get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY);
        log.debug("endpointAddress " +endpointAddress);
    }
}
公共类HeaderHandler实现SOAPHandler{
公共布尔handleMessage(SOAPMessageContext smc){
字符串endpointAddress=(字符串)smc.get(BindingProvider.ENDPOINT\u ADDRESS\u属性);
log.debug(“endpointAddress”+endpointAddress);
}
}

JAXWSProperties.HTTP\u REQUEST\u URL和BindingProvider.ENDPOINT\u ADDRESS\u属性对我都不起作用

这就是我如何在WildFly 10(Java 7)上获得出站消息中的url:


制作不同的方法并将第一个元素作为方法名,这样您就可以直接使用varisous soap消息是的,您是对的。我发现,当处理的消息是来自服务器的响应时,需要填充该消息。在本例中,使用的HTTP方法不是GET,而是POST,因此HTTP_请求_URL为空。总之,如果您需要在传入消息上作为服务器获取Url,那么应该使用HTTP\u请求\u Url,而如果您像客户端端点\u地址\u属性一样进行此操作。至少在Tomcat7中<代码>com.sun.xml.ws.developerfor
JAXWSProperties
在Java7中似乎不可用。还有别的选择吗?
public boolean handleMessage(SOAPMessageContext context) {
    String url = (String) context.get(MessageContext.PATH_INFO);
    ...
}