繁体   English   中英

JAX-WS-在JBoss中添加SOAP标头

[英]JAX-WS - Adding SOAP Headers in JBoss

我想在JBoss上运行的异步Web服务中设置/获取SOAP标头(特别是wsa:ReplyTowsa:MessageId )。

因为这是一个JBoss平台,所以我不能使用com.sun.xml.ws.developer.WSBindingProvider (按照JAX-WS-Adding SOAP Headers中的建议 )。

一种选择是使用SOAPHandler 还有其他类似于WSBindingProvider解决方案的方法吗?

不幸的是,您将需要为此使用特定的处理程序。 以前的JBOSS EAP版本确实支持javax.xml.ws.addressing软件包,但是看起来这些软件包不是EE6的一部分。

将处理程序(例如jaxws-handlers.xml定义为:

<handler-chains xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee javaee_web_services_1_3.xsd">

  <handler-chain>
    <protocol-bindings>##SOAP11_HTTP</protocol-bindings>
    <handler>
      <handler-name>Application Server Handler</handler-name>
      <handler-class>com.handler.ServerHandler</handler-class>
   </handler>
 </handler-chain>

@HandlerChain添加到Service类定义中:

@WebService (...)
@HandlerChain(file="jaxws-handlers.xml")
public class TestServiceImpl implements TestService {
   public String sayHello(String name) {
      return "Hello " + name + "!";
   }
}

并将Handler本身实现为:

public class ServerHandler implements SOAPHandler<SOAPMessageContext> {
    @Override
    public boolean handleMessage(final SOAPMessageContext context) {
        final Boolean outbound = (Boolean)context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
        if ((outbound != null) && !outbound) {
            //...
        }
        return true;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM