Boa tarde pessoal, tenho o seguinte problema:
Estou adaptando o meu sistema NFe para transmitir as notas para diversos Web Services, no momento tenho um cliente com filial no PR e SC.
Abaixo esta o método de consulta status.
public String consultaStatus(String codEstado, String certificadoCliente) throws Exception {
String retorno;
String xmlConsulta;
NfeSCANStatusServico serviceSCANStatus;
NfeSCANStatusServicoSoap soapSCANStatus;
NfeStatusServico serviceStatus;
NfeStatusServicoSoap soapStatus;
SSLClientAxisEngineConfig axisConfig;
//endereço do web service ref. ao estado passado por parametro.
Principal.webService = Principal.webServiceDAO.getWebService(codEstado);
xmlConsulta = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
+ "<consStatServ versao=\"1.07\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">\n" + " "
+ "<tpAmb>" + String.valueOf(tipoServico) + "</tpAmb>"
+ "<cUF>" + String.valueOf(codEstado) + "</cUF>"
+ "<xServ>STATUS</xServ>"
+ "</consStatServ>";
Principal.manipulaXML.gravaXML(xmlConsulta, System.getProperty("user.dir") + "/temp/ConsultaServico.xml");
axisConfig = new SSLClientAxisEngineConfig();
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
axisConfig.setProtocol("TLS");
axisConfig.setAlgorithm("SunX509");
axisConfig.setKeyStore(certificadoCliente + ".pfx");
axisConfig.setKeyStoreType("PKCS12");
axisConfig.setKeyStorePassword("123");
axisConfig.setTrustStore(codEstado + ".jks");
axisConfig.setTrustStoreType("JKS");
axisConfig.setTrustStorePassword("123456");
nfeDadosMsg = xmlConsulta;
serviceStatus = new NfeStatusServicoLocator(axisConfig);
serviceStatus.setEndStatusServico(Principal.webService.getWsStatusServico());
soapStatus = serviceStatus.getNfeStatusServicoSoap();
retorno = Geral.removeAcentos(soapStatus.nfeStatusServicoNF(nfeCabecMsg, nfeDadosMsg));
retorno = Principal.trataXML.processaRecepcao(retorno);
xmlConsulta = null;
serviceSCANStatus = null;
soapSCANStatus = null;
serviceStatus = null;
soapStatus = null;
axisConfig = null;
codEstado = 0;
tipoServico = 0;
ambiente = 0;
cnpj = null;
return retorno;
}
O que ocorre é o seguinte :
O primeiro estado que for selecionado, o sistema faz a comunicação normalmente.
Porem se informar outro estado sem fechar o sistema, retorna uma mensagem de erro.
06/10/2010 17:30:42 org.apache.axis.client.SSLClientAxisEngineConfig loadOptions
INFO: Enter::SSLClientAxisEngineConfig::init::client-config.wsdd
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
faultActor:
faultNode:
faultDetail:
Gostaria de saber como posso fazer para resolver isso.
até mais …