Pessoal,
Sei que esta pergunta parece básica, mas…
Tenho um projeto Web, um projeto EJB (que eu só criei pq preciso usar MDB) e um projeto EAR.
Nosso DataSource é inicializado por uma Servlet, no projeto Web. Nossas classes de gerenciamento de banco ficam em um jar.
Mas quem vai usar o BD é o meu MDB… então o meu projeto EJB precisa enxergar este jar, e as classes de controle de BD.
Já coloquei este jar em tudo quanto é lugar (no web-ing, no EAR, no JBoss), mas só ocorre NoClassDefFoundError.
Como um projeto EJB encontra as libs? Preciso colocá-las em algum diretório especial ou configurar algum xml?
[quote=ferstring]Pessoal,
Sei que esta pergunta parece básica, mas…
Tenho um projeto Web, um projeto EJB (que eu só criei pq preciso usar MDB) e um projeto EAR.
Nosso DataSource é inicializado por uma Servlet, no projeto Web. Nossas classes de gerenciamento de banco ficam em um jar.
Mas quem vai usar o BD é o meu MDB… então o meu projeto EJB precisa enxergar este jar, e as classes de controle de BD.
Já coloquei este jar em tudo quanto é lugar (no web-ing, no EAR, no JBoss), mas só ocorre NoClassDefFoundError.
Como um projeto EJB encontra as libs? Preciso colocá-las em algum diretório especial ou configurar algum xml?
Muito Obrigada,
Fernanda
[/quote]
Coloque uma ao jar que vc quer que o EJB no classpath do manifest do jar do EJB.
Obrigada! Foi isto mesmo que eu fiz…
Criei um arquivo Manifest.mf no META-INF do Projeto EJB.
Porém, parece-me que este arquivo só está enxergando as libs no jboss/server/default/lib. Se eu tiro elas de lá, o projeto não encontra mais…
Eu não queria deixar algumas libs “minhas” lá no servidor de aplicação.
Tentei usar caminho relativo mas não deu certo. Além disso, quando eu coloco o caminho relativo, o eclipse reclama:
IWAE0016E Line 2 in the MANIFEST.MF file in archive TesteMDB2.jar exceeds the specification limit of 72 bytes.
Obrigada pelo exemplo, mas se eu tentar usar o maven agora, eu acho que não consigo fazer este EJB esta semana hehe… um dia eu ainda tentarei usar o maven.
Bom, meu Manifest já está assim:
Manifest-Version: 1.0
Class-Path: CocoDeploy.jar log4j-1.2.8.jar commons.jar
Mas somente quando eu coloco estes jar lá no \jboss-4.0.3SP1\server\default\lib é que o EJB encontra as libs e tudo funciona!
Eu queria que minha aplicação utilizasse as libs que estivessem no projeto EJB ou no projeto EAR, e não lá no jboss.
Eu tentei utilizar caminho relativo, colocando as libs em um diretório app/lib, deixando o arquivo assim:
Manifest-Version: 1.0
Class-Path: lib/CocoDeploy.jar lib/log4j-1.2.8.jar lib/commons.jar
Mas assim não funciona…
Também tentei criar o manifest pelo Ant. Ele criou, exatamente da forma como está aí em cima… então não adiantou…
O Eclipse não encapsula os jars utilizados pelo EJB corretamente? Deve ser isso… :roll:
Sim, eu gerei um EAR e associei meu projeto Web e EJB a ele.
Tentei colocar as libs no EAR e então, no projeto EJB, eu indiquei elas no Build Path. No Eclipse compila… mas depois quando executa ele não encontra as libs (NoClassDefFoundError)… eu só consegui solucionar isso colocando o manifest.mf no EJB e colocando as libs no jboss.
Como eu faço meu manifest enxergar que deve utilizar as libs do EAR?
Hum, por isso eu não gosto dos plugins do eclipse para trabalhar com EJB.
Não sei com o Eclipse gera o EAR. Poste exatamente o que esta indo dentro do .EAR.