【问题标题】:Get Url of endpoint using on a handler (JAX-WS)使用处理程序 (JAX-WS) 获取端点的 URL
【发布时间】:2013-12-27 10:50:56
【问题描述】:

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

有没有办法获取当前消息指向的 URL,以便我可以自动从此 url 获取架构并验证消息?

【问题讨论】:

  • 制作不同的方法并将第一个元素作为方法名称,以便您可以引导各种肥皂消息

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


【解决方案1】:

在我的应用程序中,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);
    }
}

【讨论】:

  • 是的,你是对的。我发现当处理的消息是来自服务器的响应时,它会被填充。在这种情况下,使用的 HTTP 方法不是 GET,而是 POST,因此 HTTP_REQUEST_URL 为空。总而言之,如果您需要将 Url 作为传入消息的服务器,则应使用 HTTP_REQUEST_URL,而如果您像客户端 ENDPOINT_ADDRESS_PROPERTY 一样执行此操作。至少在 tomcat 7 中!!!
【解决方案2】:

找到!!!

public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {

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

【讨论】:

  • com.sun.xml.ws.developer for JAXWSProperties 在 Java 7 中似乎不可用。还有其他选择吗?
【解决方案3】:

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);
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2021-05-26
    • 2012-09-25
    • 1970-01-01
    相关资源
    最近更新 更多