微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JAX-WS RI:实现方法拦截器的最佳方法

如何解决JAX-WS RI:实现方法拦截器的最佳方法

|| 我想为我的Web服务调用提供自己的方法拦截器。基本上,应在调用real方法之前立即调用方法拦截器。请参见下面的代码片段:
public class MyMethodInterceptor {
  public Object invoke(Object t,Method m,Object[] args) throws Throwable {
    // do some magic,such as tracing,authorise,etc...
    return m.invoke(t,args);
  }     
}

// ....    

public class MyWebServiceImpl implements MyWebServiceInterface {
  public String greet(final String name) {
    return \"Hi there,\" + name;
  }
}
这个想法是,每次调用Web服务时,都会通过我的拦截器调度它。我看了看我自己的
InstanceResolver
,但是它已经失控了。我知道如何在CXF和JAX-RS(Jersey)+ Guice中执行此操作。 JAX-WS提供了“ 2”,但是这些处理程序被调用的方式为时过早(即,在方法调用之前很早),因此我现在没有所需的信息。 使用JAX-WS的Referene实现的最佳方法是什么?     

解决方法

        在jax-ws处理程序中,您才是真正的事物,您可以访问整个SOAP消息的内容,您还需要什么? 编辑: 在处理程序中使用的一些示例:
public String getMessage(SOAPMessageContext smc) {
    SOAPMessage message = smc.getMessage();
    ByteArrayOutputStream soapEnvelope = new ByteArrayOutputStream();
    message.writeTo(soapEnvelope);
    soapEnvelope.close();
    return new String(soapEnvelope.toByteArray());
}

public String getMethod(SOAPMessageContext smc) {
    SOAPMessage message = smc.getMessage();
    SOAPBody body = message.getSOAPBody();
    return body.getFirstChild().getLocalName();
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。