Ir para conteúdo
  • Cadastre-se

dev botao

Programa fecha após chamar NFE_Enviar


soft.viatech
Ver Solução Respondido por Rafael Dias,
  • Este tópico foi criado há 1500 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá, Boa Tarde.


      Estou tendo problemas numa aplicação java que usa a ACBRLIB.  Antes eu usava SSl Type = LT_all , mas agora tô usando SSl Type = LT_TLSv1_2  e no retorno da SEFAZ, quando ocorre uma rejeição o programa fecha, cria os XML's mas logo depois fecha.

       Eu percebi que quando eu consultava o NFE_StatusServico, após a retorno pela sefaz, os  XML's são criados  e o programa não fecha.

       Quando eu junto as duas rotinas, como abaixo,  o programa continua aberto, mas acho que essa não é uma boa prática.  

        ByteBuffer buffer = ByteBuffer.allocate(STR_BUFFER_LEN);
        IntByReference bufferLen = new IntByReference(STR_BUFFER_LEN);
        ACBrNFeLib.INSTANCE.NFE_StatusServico(buffer, bufferLen);
        int ret  =  ACBrNFeLib.INSTANCE.NFE_Enviar(aLote, imprimir, sincrono, zipado, buffer, bufferLen);
        checkResult(ret);
        return processResult(buffer, bufferLen);

       Eu acho que tem que limpar esse buffer, ou fazer algo assim, coisa que o método NFE_StatusServico faz, mas o NFE_Enviar não está fazendo.

 

       No arquivo de log tem  NFE_Enviar  sem o NFE_StatusServico   dando erro e depois os dois juntos.

 

 

ACBrLibNFE-20200217.log

Link para o comentário
Compartilhar em outros sites

se eu faço assim dá certo:

    ByteBuffer buffer = ByteBuffer.allocate(STR_BUFFER_LEN);
        IntByReference bufferLen = new IntByReference(STR_BUFFER_LEN);
        ACBrNFeLib.INSTANCE.NFE_StatusServico(buffer, bufferLen);
        int ret  =  ACBrNFeLib.INSTANCE.NFE_Enviar(aLote, imprimir, sincrono, zipado, buffer, bufferLen);
        checkResult(ret);
        return processResult(buffer, bufferLen);

se eu faço assim dá errado:

        ByteBuffer buffer = ByteBuffer.allocate(STR_BUFFER_LEN);
        IntByReference bufferLen = new IntByReference(STR_BUFFER_LEN);
        int ret  =  ACBrNFeLib.INSTANCE.NFE_Enviar(aLote, imprimir, sincrono, zipado, buffer, bufferLen);
        checkResult(ret);
        return processResult(buffer, bufferLen);

é só eu tirar a linha  do NFE_StatusServico antes do NFE_Enviar que dá errado. Não se sei existe alguma instância, ou algum alocamento de memória.

     ACBrNFeLib.INSTANCE.NFE_StatusServico(buffer, bufferLen);

eu achei outros logs aqui, que pra ser bem sincero eu nem sei de onde ees vem, mas demonstram erros, tipo  :

java/lang/ArrayIndexOutOfBoundsException'> (0x04c02e00) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u231\13620\hotspot\src\share\vm\runtime\sharedRuntime.cpp

 

vou colocar esse logs em anexo.

hs_err_pid8668.log hs_err_pid9948.log hs_err_pid12492.log hs_err_pid15844.log hs_err_pid5172.log hs_err_pid6796.log hs_err_pid8360.log

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.