Tomcat como Serviço do Windows 2008 + JNI = PAU

3 respostas
rfsilva

Olá a tod@s!

Estamos com um problema curioso dentro de um cenário mais curioso ainda, e se alguém puder nos dar uma luz, agradeço desde já

Estamos com um Tomcat 6.0 rodando como serviço do Windows 2008 R2, JDK 1.6.0_20. Temos um aplicativo rodando dentro do Tomcat, que necessita acessar funções nativas, de um conjunto de DLLs (JNI). O caminho das DLLs foi incluído no PATH da máquina, e os jars que carregam as bibliotecas para a aplicação foram colocados no classloader do Tomcat (<Tomcat_Install_Dir>\lib), ou seja, garantimos que a carga das bibliotecas será feita uma única vez, quando o Tomcat iniciar.

Ocorre que o aplicativo, ao tentar carregar as bibliotecas, não as encontra (UnsatisfiedLinkError). Já reiniciamos a máquina diversas vezes com o PATH atualizado, já colocamos as DLLs na pasta bin do Tomcat, já rezamos para Santo Expedito, já prometemos 3 pulos pra São Longuinho, e o aplicativo insiste em não encontrar as DLLs.

Alguém já passou por isso ou tem alguma luz???

Obrigado mais uma vez!!!

3 Respostas

rfsilva

Só mais algumas informações, para ajudar:

Se eu starto manualmente o Tomcat, e com as DLLs na pasta bin, funciona :smiley:
Fiz um programa simples, que só carrega e executa uma função de uma das DLLs. Criei um .bat que configura o PATH, incluindo o diretório das DLLs e executa o programa e funciona :smiley:
Startando o Tomcat pelo Eclipse, com o PATH contendo o caminho das DLLs, funciona :smiley:

Só nesse cenário mesmo que estamos patinando! Estamos até pensando em nos inscrever para as Olimpíadas de Inverno em patinação!

maiconramones

Opa, cara faz muito tempo que não mecho com windows como SO de produção.

Mas eu me lembro que tem como tu configurar a permissão de um usuário utilizado para iniciar um serviço.

E acho que nesse caso a primeira coisa a olhar na minha opinião é a questão de permissão de usuários.

rfsilva

maiconramones:
Opa, cara faz muito tempo que não mecho com windows como SO de produção.

Mas eu me lembro que tem como tu configurar a permissão de um usuário utilizado para iniciar um serviço.

E acho que nesse caso a primeira coisa a olhar na minha opinião é a questão de permissão de usuários.

Oi Maicon!

Obrigado pela resposta. Dos dois grandes abacaxis deste cenário bizarro, consegui eliminar um. Conseguimos dar um pé na bunda das DLLs, ao conseguir uma versão da API que utilizamos escrita totalmente em Java. Infelizmente o outro grande abacaxi (Ruindows) está mais complicado de dar um pé na bunda. Mas de qualquer forma, já temos nosso grande atual problema resolvido.

Vou dar o post como encerrado, mas fiquem à vontade para discutirem essa doideira ae :smiley:

Brigadão mais uma vez galera!!!

Criado 20 de janeiro de 2011
Ultima resposta 20 de jan. de 2011
Respostas 3
Participantes 2