Pessoal,
Faz um tempo que estamos realizando uma alteração na estrutura de um projeto web. Estava postando dúvidas pontuais, mas como empacamos, vou tentar explicar todo o problema.
Temos uma aplicação em projeto Web, com WebServices (tanto sendo servidor de serviços, como acessando serviços de outro web service). Fazemos o deply em um EAR e tudo funciona bem. O problema é que fizemos Threads, e não sabíamos que era “proibido”, por questões de acessos ao container, etc.
Então fizemos a seguinte reestruturação, criando 3 projetos:
1) Projeto EJB: somente com MDBs, para substituir nossas threads.
2) Projeto Web: somente com as telas e as “casquinhas” de web-services.
3) Projeto Util: utilitário com todas as classes de negócio.
Ou seja, os projetos 1 e 2 dependem do projeto 3.
Tudo isso foi encapsulado em um projeto EAR.
Além disso temos vários .jars que são utilizamos por todos os projetos, principalmente o .jar que encapsula nossa conexão com o banco de dados.
Colocamos estes .jars todos como Jar Utilitários no EAR.
1o. Problema) Conexão com o BD - solucionamos da seguinte forma: o Projeto WEB tem uma servlet que inicializa o BD. Por ser uma lib “compartilhada”, quando os MDBs vão acessar o BD, ele já está Ok.
2o. Problema) Libs de Tags do Jsp - as tags não encontravam as classes de libs do EAR, então eu encontrei um bug sobre isso no google, e passei a colocar as libs “de tela” no WEB-INF/lib do projeto Web. Isso resolveu até…
Bom, mesmo assim ainda estamos com problemas de empacotamento, classloader, etc.
A dúvida inicial é arquitetural: esta estrutura está adequada? Um Projeto EJB pode fazer uso de classes de uma lib externa? O que vcs vêem de errado em toda a estrutura que descrevi?
Obs.: Não temos ainda grande experiência em EJB, por isso queremos utilizá-lo o menos possível… senão tentaríamos fazer serviços e tal, mas isto tb demandaria uma mudança arquitetural muito maior, e não temos muito tempo para aprender e executar.
Temos que utilizar Servlet 2.3 (por incompatibilidade de uma lib com o 2.4), o que nos obrigou a usar EAR 1.3 e EJB 2.0.
Hj estou utilizando Java 1.4, Eclipse 3.2.1 WTP e JBoss404.
Muito Obrigada,
Fernanda