Membros Pro Messias Bittencourt Postado 28 Agosto Membros Pro Postado 28 Agosto Boa tarde Srs. Estou utilizando o boleto em um ambiente Linux (arquivo .so). Até então venho utilizando o .so que se encontra na pasta Cdecl ou StdCall. Funcionando tudo normal desta forma. Só pelo fato de eu alterar o .so, utilizando a mesma versão, para o que se encontra na pasta MT/Linux ocorre o erro abaixo. Como deu o erro e já estou em ambiente de produção, voltei com o .so que funciona para dar continuidade. Já viram algo parecido? # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f236ec4c37b, pid=1489, tid=1514 # # JRE version: OpenJDK Runtime Environment (11.0.24+8) (build 11.0.24+8-post-Ubuntu-1ubuntu322.04) # Java VM: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) # Problematic frame: # C [libacbrboleto64.so+0x24c37b] # # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /home/ubuntu/core.1489) # # An error report file with more information is saved as: # /home/ubuntu/hs_err_pid1489.log # # If you would like to submit a bug report, please visit: # https://bugs.launchpad.net/ubuntu/+source/openjdk-lts # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # Att
Consultores Diego Foliene Postado 28 Agosto Consultores Postado 28 Agosto Boa tarde! Não basta apenas alterar o .so. Também existe uma diferença na forma como você faz o bind e a chamada dos métodos, pois na Lib MT, você precisa passar um ponteiro como Handle. Mais detalhes em ACBrLib e MultiThread 2 Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!
Consultores Solution Daniel InfoCotidiano Postado 29 Agosto Consultores Solution Postado 29 Agosto @Messias Bittencourt Apenas complementando o que o @Diego Foliene citou, existe exemplos em java (MT) é multithread. https://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/Java/Boleto/Demo/ACBrLibBoletoMT.Demo/ cada requisição recebida na sua api, vc vai criar um "ponteiro" como o diego citou e todos os metodos vc vai usar o mesmo ponteiro. assim vc vai identificar para qual requisição é a resposta (ponteiro) Exemplo: (estou mostrando o CEP, mas é só para vc abstrair a ideia) acbr_lib.CEP_Inicializar(ponteiro,"/00111222000195/acbrlib.ini","") acbr_lib.CEP_ConfigGravarValor(ponteiro,"Principal", "TipoResposta", "2") acbr_lib.CEP_BuscarPorCEP(ponteiro, "13930000", sResposta, ctypes.byref(esTamanho)) acbr_lib.CEP_Finalizar(ponteiro) 1 Daniel de Morais (Infocotidiano) Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord
Membros Pro Messias Bittencourt Postado 29 Agosto Autor Membros Pro Postado 29 Agosto 23 horas atrás, Diego Foliene disse: Boa tarde! Não basta apenas alterar o .so. Também existe uma diferença na forma como você faz o bind e a chamada dos métodos, pois na Lib MT, você precisa passar um ponteiro como Handle. Mais detalhes em ACBrLib e MultiThread Muito obrigado pelo esclarecimento Diego. Eu não sabia desta implementação com uso de ponteiros. Já o estou implementando aqui. Muito obrigado. 9 horas atrás, Daniel InfoCotidiano disse: @Messias Bittencourt Apenas complementando o que o @Diego Foliene citou, existe exemplos em java (MT) é multithread. https://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/Java/Boleto/Demo/ACBrLibBoletoMT.Demo/ cada requisição recebida na sua api, vc vai criar um "ponteiro" como o diego citou e todos os metodos vc vai usar o mesmo ponteiro. assim vc vai identificar para qual requisição é a resposta (ponteiro) Exemplo: (estou mostrando o CEP, mas é só para vc abstrair a ideia) acbr_lib.CEP_Inicializar(ponteiro,"/00111222000195/acbrlib.ini","") acbr_lib.CEP_ConfigGravarValor(ponteiro,"Principal", "TipoResposta", "2") acbr_lib.CEP_BuscarPorCEP(ponteiro, "13930000", sResposta, ctypes.byref(esTamanho)) acbr_lib.CEP_Finalizar(ponteiro) Muito obrigado pelas orientações Daniel. 3
Membros Pro Messias Bittencourt Postado 28 Novembro Autor Membros Pro Postado 28 Novembro Em 29/08/2024 at 17:26, Messias Bittencourt disse: Muito obrigado pelo esclarecimento Diego. Eu não sabia desta implementação com uso de ponteiros. Já o estou implementando aqui. Muito obrigado. Muito obrigado pelas orientações Daniel. Bom dia. Gostaria de saber se existe algum outro procedimento que pode ser adotado. Mesmo seguinte à risca as orientações, o problema persiste. Na realidade é intermitente. Ele começa funcionando normalmente mas de uma hora para outra surge o erro. E após o erro apenas reiniciando a aplicação.
Consultores Daniel InfoCotidiano Postado 4 Dezembro Consultores Postado 4 Dezembro consegue gerar um exemplo basico para que possamos executar aqui em nosso ambiente? Qual a linguagem q vc utiliza ? pois nao temos relatos por enq de probemas na lib MT para linux. Daniel de Morais (Infocotidiano) Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord
Recommended Posts
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora