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

时间:2013-12-27 10:50:56

标签: java jax-ws java-metro-framework

我正在使用通用的Handler类实现许多JAX-WS Web服务,以验证传入SOAP消息的正确结构。

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

3 个答案:

答案 0 :(得分:7)

在我的应用程序smc.get(JAXWSProperties.HTTP_REQUEST_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);
    }
}

答案 1 :(得分:1)

实测值!!!

public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {

public boolean handleMessage(SOAPMessageContext smc) {
    System.out.println("URL of Endpoint" +smc.get(JAXWSProperties.HTTP_REQUEST_URL));
 }
}

答案 2 :(得分:0)

JAXWSProperties.HTTP_REQUEST_URL和BindingProvider.ENDPOINT_ADDRESS_PROPERTY都不适合我。

这是我在WildFly 10(Java 7)上的出站消息中获取url的方式:

public boolean handleMessage(SOAPMessageContext context) {
    String url = (String) context.get(MessageContext.PATH_INFO);
    ...
}