JAXWS WebService Client (WSIMPORT)

1 resposta
P

Bom dia a todos,

Estou aprendendo a fazer um client de webservice com axis2 em uma aplicação JavaSE de teste com método main, mas não estou conseguindo.

O Serviço da empresa que estou usando para aprender, está em protocolo seguro https e tem 3 certificados.

Eu já importei os certificados do protocolo https do serviço para a jvm do java 8 e estou usando o axis2, mas não estou conseguindo. Tentei ler a documentação, mas estou tendo dificuldade, já fiz testes com serviços sem autenticação e sem protocolo seguro https e consegui perfeitamente consumir serviço dos correios por exemplo, mas o serviço feito na minha empresa eu não consigo, podem me ajudar?

abaixo segue o erro que tenho na console do eclipse e o código da classe que tem o método main

Obs.: Eu importei os certificados para jvm, criei um arquivo de autenticação e usei o wsimport fazendo uso do arquivo de autenticação e consegui gerar as classes, entendo que não houve erro na geração das classes. Importei para o classpath do projeto uma implementação de jaxws e jaxb.

Erro na console


Exception in thread “main” com.sun.xml.internal.ws.client.ClientTransportException: O servidor enviou código de status HTTP 401: Unauthorized

at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(Unknown Source)

at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(Unknown Source)

at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source)

at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source)

at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(Unknown Source)

at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source)

at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source)

at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source)

at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source)

at com.sun.xml.internal.ws.client.Stub.process(Unknown Source)

at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(Unknown Source)

at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)

at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)

at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source)

at com.sun.proxy.$Proxy32.read(Unknown Source)

at br.com.company.Principal.main(Principal.java:46)

Código do método main


package br.com.company;

import javax.xml.ws.BindingProvider;
import javax.xml.ws.Holder;

import br.com.nome_company.projeto_xxx_infra.Classexxx;

import br.com.nome_company.projeto_xxx_infra.ClassexxxService;

import br.com.nome_company.projeto_xxx_infra.Classexxx_Type;

import br.com.nome_company.projeto_xxx_infra.ClassexxxError_Exception;

public class Principal {

static {

    java.net.Authenticator.setDefault(new java.net.Authenticator() {

        @Override
        protected java.net.PasswordAuthentication getPasswordAuthentication() {
            return new java.net.PasswordAuthentication("usuarioxxx", "senhaxxx".toCharArray());
        }
    });
}

public static void main(String[] args) {
	
	
	ClassexxxService service = new ClassexxxService();
	Classexxx proxy = service.getHTTPSPort();
	
	((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "caminho do endpoint fornecido pelo cliente");
	
	/*
	((BindingProvider)proxy).getRequestContext()
     .put(BindingProvider.USERNAME_PROPERTY, "usuarioxxx");
	((BindingProvider)proxy).getRequestContext()
     .put(BindingProvider.PASSWORD_PROPERTY, "senhaxxx");*/
	
	

	Classexxx_Type item = new Classexxx_Type();
	
	
	Holder<Classexxx_Type> tp = new Holder<>();

	try {
		proxy.read(tp);
		System.out.println("Sucesso!!");
		
	} catch (ClassexxxError_Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}


1 Resposta

P

Houve um pequeno engano aqui, eu já tentei com axis2 e não tava conseguindo, então tentei fazer direto com javaxws gerando as classes com o wsimport e não estou conseguindo tb, foi isto que quis deizer, eu estou achando que o erro dá na hora que tenta interpretar o objeto da Classe Holder, só que dá uma mensagem genérica como se o erro fosse na autenticação, alguém pode ajudar?

Criado 18 de janeiro de 2016
Ultima resposta 18 de jan. de 2016
Respostas 1
Participantes 1