Isolamento de classloader JBoss 5.1

2 respostas
tiagoemerick

Salve pessoal.

To com um problema no seguinte ambiente:

  • Tenho uma aplicação no Tomcat e preciso migrar pro JBoss 5.1 e a aplicação tem dentro dela todas as libs necessárias pro seu funcionamento.
    (A aplicação usa hibernate 3.1, ehcache, flash e algumas libs que os próprios desenvolvedores criaram pra facilitar a aplicação).

Um dos requisitos da mudança é que eu retire todas as libs da aplicação e que o JBoss já fornece, como por exemplo o hibernate (hibernate do JBoss é a versão 3.3.2) e deixe apenas as libs proprietarias dentro do projeto.

Sendo assim, eu fiz um isolamento de classloader do projeto retirando todas as libs que o JBoss já fornece.
A principio funcionou perfeitamente (sem problemas de compatibilidade entre versões). O único problema gerado foi com o EhCahce.
Como o JBoss não tem a lib do ehCache, eu a deixei dentro da aplicação, mas na hora de acessar a aplicação ocorre uma exceção de ClassDefNotFound (net.sf.ehcache).
PS: O cache provider da aplicação é o fornecido pelo Hibernate

– Minha opinião sobre o que está acontecendo:
Quando eu subo o JBoss ele carrega no classloader dele, as libs do hibernate 3.3.2 e as libs do hibernate-cache-provider(que vai chamar o ehCache).
E só depois ele carrega as libs da aplicação, que embora tenha lá dentro a lib do ehcache o JBoss não vai ter a visibilidade já que na árvore do classloader o pai não consegue ver o filho.
E por isso gera o problema.

– Possível solução
Eu posso colocar a lib do ehCache dentro da pasta lib da instancia do JBoss que eu to subindo(dessa forma eu carrego no classloader o ehcache no mesmo nível da árvore que o do provider do hibernate). Isso resolve o problema, mas eu não posso fazer isso porque pode impactar outras aplicações que estão dentro da mesma instancia(sim… infelizmente tem mais de uma aplicação por instancia e não posso mudar isso).

Então pessoal, como vcs sugerem que eu possa resolver esse problema?

2 Respostas

tiagoemerick

up!

alguém pessoal?

tiagoemerick

Ok pessoal, só para constar…

como não obtive respostas e não encontrei outra solução…

deixei a lib do ehCache dentro das libs da instancia. Funciona legal, mas teve que ficar compartilhada entre as outras aplicações.

De qualquer forma, valeu!

Criado 17 de março de 2011
Ultima resposta 29 de mar. de 2011
Respostas 2
Participantes 1