Apache Axis2 e mensagem SOAP (value cannot be null: Parameter name: schemas)

7 respostas
F

Pessoal, estou há duas semanas sem conseguir resolver este problema.

Com Axis2 eu crio os clientes para acessar o webservice. Passo por toda a parte de autenticação e assinatura sem problema, mas quando eu evoco o método do webservice (que prepara uma mensagem soap) recebo o seguinte erro:

xception in thread "main" org.apache.axis2.AxisFault: Value cannot be null.
Parameter name: schemas
	at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:446)
	at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:371)
	at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
	at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
	at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
	at org.tempuri.NfseServicesStub.recepcionarLoteRps(NfseServicesStub.java:1062)
	at Teste.main(Teste.java:42)

Ativando o debug do Axis, este trecho chama a atenção:

0:37:55,527 DEBUG content:70 - << “nvelope xmlns:s=“http://schemas.xmlsoap.org/soap/envelope/”><s:Body><s:Fault>s:ClientValue cannot be null. [\n]”
10:37:55,527 DEBUG content:70 - << “Parameter name: schemasValue cannot be null. [\n]”
10:37:55,528 DEBUG content:84 - << “Parameter name: schemas</s:Fault></s:Body></s:Envelope>”

Que esta está faltando? Eu não estou entendendo. Lembro que estou acessando um webserice que roda em plataforma .NET.

Abraço

7 Respostas

F

Resolvido.

http://www.guj.com.br/posts/list/227812.java

F

Resolvido.

http://www.guj.com.br/posts/list/227812.java

P

Caro Flávio,

eu também criei um web service cliente, só que para se conectar ao web service precisa de assinatura digital, a empresa já me passou o arquivo.pfx do certificado digital, mas não sei como faço para incluir essa autenticação.

Por favor, vc pode me dá uma dica de como eu faço isso?

Obrigado.

R
Não sei se foi melhor você reviver o tópico do que criar um novo, mas pra evitar que você precise fazer os 2, já te mando uma ajuda.
public static void configurar(){
	    String CAMINHO_DO_CERTIFICADO = "";
     String SENHA_DO_CERTIFICADO = "";
     String CAMINHO_ARQUIVO_CACERTS = "";

		System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
		Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

		System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");

		System.clearProperty("javax.net.ssl.keyStore");
		System.clearProperty("javax.net.ssl.keyStorePassword");
		System.clearProperty("javax.net.ssl.trustStore");

		System.setProperty("javax.net.ssl.keyStore", CAMINHO_DO_CERTIFICADO );
		System.setProperty("javax.net.ssl.keyStorePassword", SENHA_DO_CERTIFICADO);

		System.setProperty("javax.net.ssl.trustStoreType", "JKS");
		System.setProperty("javax.net.ssl.trustStore", CAMINHO_ARQUIVO_CACERTS);
		
	}
Não sei se precisa do arquivo com cacerts mas sei que para os serviços da SEFAZ precisa
P

Oi Rodrigo,

o serviço é da Sefaz sim, e não foi me passado o arquivo cacerts e nem a senha do certificado. vou pedir essas informações à SEFAZ, testar o código que vc me passou e posto o resultado aqui.

Obrigado.

R

o cacerts você mesmo pode gerar.

http://www.javac.com.br/jc/posts/list/34-nfe-geracao-do-arquivo-cacerts-para-todos-os-estados-unico-arquivo.page

quanto à senha do certificado, essa eles realmente precisam te passar :slight_smile:

P

Rodrigo, o sistema que estou trabalhando se conecta com o Web Service da Sefaz do estado do Ceará, o sistema não é de nota fiscal e sim de gerar Documento de Arrecadação Estadual (DAE). Esse codigo gerador do Cacerts serve pra esse web service?

esse código ele gera um arquivo é isso? ele rodou com sucesso aqui, mas não estou conseguindo localizar o arquivo gerado.

Criado 16 de dezembro de 2010
Ultima resposta 19 de out. de 2012
Respostas 7
Participantes 3