JAX-WS: Como obter um identificador para iniciar/final do processamento da mensagem SOAP

StackOverflow https://stackoverflow.com/questions/1808032

  •  05-07-2019
  •  | 
  •  

Pergunta

Situação: Serviço da Web Jax-WS no WebLogic AppServer; WSDL First Development, Jaxb Customizations no arquivo de ligação externa.

Eu gostaria de obter um identificador para o contexto Jaxb real que processará a mensagem SOAP XML, antes da Ele foi solto em objetos Java.

Então eu gostaria de pegue O UNMARSHALLER deste contexto JAXB - aquele que realmente será usado durante o UNSARSHALLING. E, em seguida, configure algumas propriedades deste UNMARSHALLER (por exemplo, ouvinte e IdResolver).

Foi útil?

Solução

O novo @USESJAXBCONTEX Anotação JaxbContextFactoryin JAXWS 2.1.5 - JAXB 2.2 é provavelmente o que eu preciso para isso. No entanto, o WebLogic 10.3.1 usa o JAXWS 2.1.1, JAXB 2.1.3.

Outra solução é usar:

@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>

Isso dá acesso à mensagem SOAP XML. Eu ainda tenho que descobrir onde o nome do método pode ser encontrado.

Ao invés de:

@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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top