1
resposta

dúvida com integração soap e jax ws

Estou tentando fazer uma integração com JAX WS, porem não está dando certo no java, no SOAP UI está ok, alguém pode me ajudar?

public class TesteRequestConsultaInconsistencia {

    private static final String WS_URL = "http://horusws.treinamento.saude.gov.br/horus-ws-service/HorusWSService/HorusWS?wsdl";
    public static void main(String[] args) {
        try {
            URL url = new URL(WS_URL);
            QName qname = new QName("http://www.saude.gov.br/horus-ws", "HorusWSService");
            Service service = Service.create(url, qname);
            HorusWSAsync horusWSAsync = service.getPort(HorusWSAsync.class);
            BindingProvider binding = (BindingProvider) horusWSAsync;
            binding.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WS_URL);
            binding.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "alessandro@rangtecnologia.com.br");
            binding.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "horus247841");
            binding.getRequestContext().put("SOAPAction", "hor:consultarInconsistencias");
            ProtocoloType protocolo = new ProtocoloType();
            protocolo.setDtRecebimento("31-10-2017 15:34:12");
            protocolo.setNuProtocoloEntrada("17100000023000003132");
            InconsistenciaProcessamentoLoteType inconsistencias = horusWSAsync.consultarInconsistencias(protocolo);
            for (InconsistenciaProcessamentoLoteType.Inconsistencias in : inconsistencias.getInconsistencias()) {
                System.out.println("inconsistencia:" + in.getInconsistencia().getMensagem());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ERRO:

dez 26, 2017 2:28:42 PM com.sun.xml.ws.wsdl.PayloadQNameBasedOperationFinder <init>
ADVERTÊNCIA: Sem partes do corpo exclusivas! Em uma porta, conforme BP 1.1 R2710, as operações devem ter assinatura de operação exclusiva na conexão para obter despacho com sucesso. Os métodos [consultarInconsistencias, consultarResultadoProcessamento] têm o mesmo bloco do corpo da solicitação {http://www.saude.gov.br/horus-ws/schemas/v1/HorusTypes}protocolo. O método de despacho pode falhar, o runtime tentará despachar usando SOAPAction. Outra opção é ativar o AddressingFeature para o runtime ativado identificar exclusivamente a operação do WSDL usando o cabeçalho wsa:Action.
dez 26, 2017 2:28:42 PM com.sun.xml.ws.wsdl.PayloadQNameBasedOperationFinder <init>
ADVERTÊNCIA: Sem partes do corpo exclusivas! Em uma porta, conforme BP 1.1 R2710, as operações devem ter assinatura de operação exclusiva na conexão para obter despacho com sucesso. Os métodos [consultarInconsistencias, consultarResultadoProcessamento] têm o mesmo bloco do corpo da solicitação {http://www.saude.gov.br/horus-ws/schemas/v1/HorusTypes}protocolo. O método de despacho pode falhar, o runtime tentará despachar usando SOAPAction. Outra opção é ativar o AddressingFeature para o runtime ativado identificar exclusivamente a operação do WSDL usando o cabeçalho wsa:Action.
com.sun.xml.ws.fault.ServerSOAPFaultException: Client received SOAP Fault from server: Fault occurred while processing. Please see the server log to find more detail regarding exact cause of the failure.
    at com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:193)
    at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:131)
    at com.sun.xml.ws.client.sei.StubHandler.readResponse(StubHandler.java:253)
    at com.sun.xml.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:203)
    at com.sun.xml.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:290)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)
    at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)
    at com.sun.proxy.$Proxy42.consultarInconsistencias(Unknown Source)
    at br.com.rangtecnologia.webservice.horus.TesteRequestConsultaInconsistencia.main(TesteRequestConsultaInconsistencia.java:32)
1 resposta

Oi Alessandro, tudo bem ?

Você deu uma olhadinha nisso ? Parece que está faltando algo :

Sem partes do corpo exclusivas! Em uma porta, conforme BP 1.1 R2710, as operações devem ter assinatura de operação exclusiva na conexão para obter despacho com sucesso. Os métodos [consultarInconsistencias, consultarResultadoProcessamento] têm o mesmo bloco do corpo da solicitação {http://www.saude.gov.br/horus-ws/schemas/v1/HorusTypes}protocolo. O método de despacho pode falhar, o runtime tentará despachar usando SOAPAction. Outra opção é ativar o AddressingFeature para o runtime ativado identificar exclusivamente a operação do WSDL usando o cabeçalho wsa:Action