Ajuda - Status servico NFe2 com axis2

9 respostas
Edifran

Bom dia pessoal.

Preciso de ajuda, tá tudo muito confuso.
Estava usando JAX-WS pra NFe2, nada deu certo. Então estou migrando pra axis2.
Peguei um exemplo aqui no forum:

br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub stub = new br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub();
br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeDadosMsg nfeDadosMsg7= null;
            // TODO : Fill in the nfeDadosMsg7 here

            String nfeDadosMsg =
                "<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">" +
                "<consStatServ versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">" +
                "<tpAmb>2</tpAmb>" +
                "<cUF>42</cUF>" +
                "<xServ>STATUS</xServ>" +
                "</consStatServ>" +
                "</nfeDadosMsg>";

             XMLInputFactory inputFactory = XMLInputFactory.newInstance();

            Factory factory = new Factory();

            nfeDadosMsg7 = factory.parse(inputFactory.createXMLStreamReader(new StringReader(nfeDadosMsg)));


//          br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsgE nfeCabecMsg8 = new br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsgE();
            System.out.println("aqui 1");
            NfeCabecMsgE nfeCabecMsg8 = new NfeCabecMsgE();
            System.out.println("aqui 2");
            // TODO : Fill in the nfeCabecMsg8 here
            NfeCabecMsg cabec = new NfeCabecMsg();
            cabec.setCUF("42");
            cabec.setVersaoDados("2.00");
            nfeCabecMsg8.setNfeCabecMsg(cabec);

            NfeStatusServicoNF2Result result = stub.nfeStatusServicoNF2(nfeDadosMsg7, nfeCabecMsg8);
            System.out.println(result.localExtraElement);

Mas a classe NfeStatusServico2Stub por exemplo, eu não tenho. As únicas classes que eu tenho, que o axis criou foram essas (para o status do serviço).

ExtensionMapper.java
NfeCabecMsg.java
NfeCabecMsgE.java
NfeDadosMsg.java
NfeStatusServico2MessageReceiverInOut.java
NfeStatusServico2Skeleton.java
NfeStatusServico2SkeletonInterface.java
NfeStatusServicoNF2Result.java

Sei que o desespero não nos leva a nada, mas eu estou quase me desesperando, o meu trabalho não está rendendo nada, to perdendo muito tempo nessas coisas.
Muita gente deve estar passando por isso também, então, vamos unir nossas forças e acharmos a solução para os problemas.

Abraço.

9 Respostas

luiz_renato

Cara,

NFe é braba mesmo :slight_smile:
Gera novamente os client’s pelo Eclipse que ele cria o stub .
Pelo visto estas classes que vc listou foram geradas pelo JAX-WS.
Tenta fazer isso e posta o resultado.

Edifran

Obrigado Luiz, vou fazer isso.

Tem uma dica de como criar no Eclipse? Eu uso o NetBeans, mas já estou instalando o Eclipse.

luiz_renato

Pega o arquivo wsdl ecopia pro seu projeto ( se vc ja não fez isso) , clica com o botão direito sobre ele e seleciona WebService -> “Generate Client”, nas telas seguintes vc especifica Axis 2 e o package onde as classes serao criadas.

G

Com Axis2?

O meu está funcionando assim:

try {
			NfeStatusServico2Stub stubStatus = new NfeStatusServico2Stub();
			NfeStatusServico2Stub.NfeDadosMsg dadosStatus = new NfeStatusServico2Stub.NfeDadosMsg();
			
			String s = "<consStatServ versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
	           +"<tpAmb>2</tpAmb><cUF>42</cUF><xServ>STATUS</xServ></consStatServ>";
			
			OMElement el = AXIOMUtil.stringToOM(s);
			dadosStatus.setExtraElement(el);
			NfeStatusServico2Stub.NfeCabecMsgE cabecalho = new NfeStatusServico2Stub.NfeCabecMsgE();
			cabecalho.setNfeCabecMsg(getCabecalho());
			NfeStatusServicoNF2Result r = stubStatus.nfeStatusServicoNF2(dadosStatus, cabecalho);
			System.out.println(r.getExtraElement().toString());
		} catch (AxisFault e) {
			throw new NfeException(e);
		} catch (RemoteException e) {
			throw new NfeException(e);
		} catch (XMLStreamException e) {
			throw new NfeException(e);
		}
jeroqueiroz

giovani_sc,

Vc esta usando aplicação Web?

G

Cara,
Para NFe eu uso desktop, e está tdo funcionando.
Qualquer dúvida, me de um toque. Eu fiz do zero, e está redondinho!

Giovani

jeroqueiroz

Prezado giovani_sc,

Obrigado pela atenção.

Estou desenvolvendo Web é estou com o seguinte problema, citado neste tópico que eu criei.

G

Entendi,
Certificado inválido. Aconteceu comigo também.
Por isso que o meu é desktop. Pois para eu resolver este problema era necessário um certificado SSL do tipo Servidor.
O valor desse certificado fica aproximadamente R$ 3.000,00/ano.

Giovani

jeroqueiroz

Prezado giovani_sc,

Onde posso obter informações sobre este tipo de certificado?

Não sabia que tinha esta relação não você tem algum link ai?

Criado 24 de fevereiro de 2011
Ultima resposta 28 de jul. de 2011
Respostas 9
Participantes 4