Olá pessoal. Meu nome é Alexandre, trabalho há uns dois anos com Java e ainda não cheguei a desenvolver nada envolvendo EJB’s, apenas alguns exemplos básicos de alguns livros sobre o tema.
Mas na empresa onde trabalho, precisarei desenvolver dois sistemas distribuídos, com a parte web rodando no Tomcat utilizando JSF e a parte corporativa (.ear) rodando no JBOSS, e estou com algumas dúvidas com relação a melhor arquitetura desses dois sistemas, visto que é a primeira vez q trabalho com sistemas distribuídos.
Os dois sistemas vão precisar se comunicar, pois em alguns casos, cada um dos sistemas vai precisar de um processamento q será executado pelo outro sistema. Para isso pensei em criar duas Session Facades em cada sistema, uma q teria os métodos necessários à camada WEB (.war) e outra Session Facade com os métodos necessários ao outro sistema.
-
Minha dúvida é se realmente eu deveria criar duas Session Facades em cada aplicação (uma para o .war e outra para a aplicação dependente) e se essas Facades devem ficar em projetos EJB diferentes ou podem ficar no mesmo projeto ?
-
Acredito que seja melhor criar dois projetos EJB (um para cada Session Facade), neste caso eu posso deixar os dois projetos EJB’s dentro do mesmo projeto .ear, ou devo criar um .ear para cada EJB Session Facade ?
-
A camada WEB se comunicará com a camada de domínio da aplicação, através de DTO’s (pensei nessa solução por ser um sistema distribuído). Nesse caso, os DTO’s devem ficar em um projeto .jar separado ?
Pensei em agrupar os DTO’s, as Exceptions, o Business Delegate e as interfaces (Home e Remote) da Session Facade dentro de um projeto .jar q seria disponibilizado para o .war no Tomcat, mas não sei se essa é a forma correta. Assim o projeto EJB ficaria apenas com a implementação da Session Facade.
- Como fica os nomes dos projetos ?
Pensei em criar:
app (aplicação corporativa) (.ear)
app-war (cliente web da aplicação) (.war)
app-ejb (projeto com a implementação da Session Facade (.jar)
app-dto (projeto com os dto’s e as interfaces da SF) (.jar)
app-api (projeto com as classes de negócio e os DAO’s) (.jar)
Estou com essas dúvidas e gostaria de ouvir a opinião de vcs ou de quem já trabalhou dessa forma, com dois sistemas distribuídos precisando de alguns serviços, um do outro. Como fica a arquitetura da aplicação, com relação a divisão das classes e nomenclatura dos projetos.
Qualquer ajuda é bem vinda. Mto obrigado!!!