Estou pensando na melhor forma de arquitetar uma aplicação EJB, e estou caindo em algumas dúvidas:
1ª - Na organização do projeto, o projeto é composto por 3 modulos, 1 web publico, 1 web cms, e 1 ejb negocio, preciso compartilhar algumas classes entre essas aplicações, ex: entidades e interfaces dos ejbs, então criarei mais um projeto jar simples para adicionar entidades e interfaces ejbs a principio. Mas isso gera uma questão, não quero deixar nenhuma lógica de negocio nas entidades pois elas estarão em um jar separado, logo, serão anemicas e serão entidades para persistir dados e transporta-los ocasionalmente, o que eu não gosto, gostaria de colocar alguma lógica lá, mas com essa organização acho que ficaria exposto d+.
2ª - Na comunicação entre Controle e Modelo, minha camada de negocios serão os ejbs, o que devo passar do controle p/ ejb? Vamos supor um cadastro de usuários, existe, um CadastroUsuariosEJB, Usuario entidade e um CadastroUsuariosControle, o controle chama o ejb: ejb.cadastrar(nome, nomeUsuario, senha, e mais uns 10 parametros), não gosto dessa abordagem deixa o método pouco legivel, ejb.cadastrar(usuarioEntidade), ou criar uma Classe DadosParaCadastro que encapsule esses dados e a invocação seria ejb.cadastrar(instanciaDeDadosParaCadastro), qual seria a melhor abordagem na opinião de vocês?
3ª Na comunicação entre Controle e Modelo, quando ocorrer a busca de algo, por exemplo mensagens de uma categoria, é listado na view as categorias com um link algumaCoisa.html?c=10,
o parametro é passado da visão para o controle e o controle invoca o ejb ejb.carregarMensagensPorCategoria(idCategorria), não sei se sou somente eu, mas acho muito esquisito isso, sempre pensei na comunicação entre objetos, mas acho que esse paradigma ainda vai durar em aplicações web com banco de dados relacionais, tambem seria estranho instanciar um objeto, popular o id somente p/ repassa-lo ao ejb.
Queria ouvir a opinião de vocês.
Obrigado.