jax-ws: как получить дескриптор начала / конца обработки входящего мыльного сообщения - PullRequest
2 голосов
/ 27 ноября 2009

Ситуация: веб-сервис jax-ws на сервере приложений Weblogic; Первая разработка wsdl, настройки jaxb во внешнем файле привязки.

Я хотел бы получить дескриптор фактического контекста jaxb, который будет обрабатывать входящее XML-сообщение soap, до того, как было преобразовано в объекты java.

Тогда я бы хотел получить демаршаллер этого jaxb-контекста - тот, который фактически будет использоваться во время демаршаллинга. А затем настройте некоторые свойства этого unmarshaller (например, listener и idresolver).

1 Ответ

0 голосов
/ 01 декабря 2009

Новая @ 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
...