jax-ws:如何获得处理传入soap消息的开始/结束的句柄

时间:2009-11-27 10:46:33

标签: java jaxb jax-ws

情况:Weblogic appserver上的jax-ws Web服务; wsdl首次开发,在外部绑定文件中进行jaxb自定义。

我想获得一个实际的jaxb上下文句柄,它将处理传入的soap xml消息,之后将其解组为java对象。

然后我想获取这个jaxb上下文的unmarshaller - 实际上将在解组期间使用的那个。然后设置这个unmarshaller的一些属性(例如监听器和idresolver)。

1 个答案:

答案 0 :(得分:0)

新的@UsesJAXBContex注释JAXBContextFactoryin jaxws 2.1.5 - jaxb 2.2可能就是我需要的。 但是weblogic 10.3.1使用jaxws 2.1.1,jaxb 2.1.3。

另一种解决方案是使用:

@WebServiceProvider(portName = "Port", serviceName = "Service", targetNamespace = "tns",                                                                                                        wsdlLocation = "/wsdls/x.wsdl")
@BindingType(value = "http://schemas.xmlsoap.org/wsdl/soap/http")
@ServiceMode(value = javax.xml.ws.Service.Mode.MESSAGE)
public class ServiceProvider implements Provider<SOAPMessage>

这样可以访问soap xml消息。我仍然需要弄清楚方法名称的位置。

而不是:

@WebService(portName = "Port", serviceName = "Service", targetNamespace = "tns",
wsdlLocation = "/wsdls/x.wsdl", endpointInterface = "tns.PortType")
@BindingType("http://schemas.xmlsoap.org/wsdl/soap/http")
public class ServicePort implements PortType