Odeio quando me cadastro em um fórum e minha primeira mensagem é uma dúvida. É o seguinte. Tenho que desenvolver uma aplicação Java que será composto de duas partes, uma cliente (para processamento de dados de arquivos texto) e depois uma parte web.
A parte cliente terá que ler arquivos de determinadas linguagem e realizar uma documentação além de outras funções e a parte web, como um viewer, para exibir esses dados formatados em um browses.
As dúvidas são:
Qual a melhor forma de escrever as classes de negócio e de dados para haver o máximo reaproveitamento de código? Algum design pattern recomendado?
Toda vez que procuro alguma coisa a respeito de persistência (normalmente EJB) me deparo com a necessidade de um container web. Isso é requerido mesmo? Pois eu gostaria de poder utilizar o conceito de Entity Beans na minha aplicação cliente também. Como poderia fazer isso? (Não sei se ajuda mas eu uso o Eclipse)
Estou pensando em utilizar o conceito do MVC para a parte web. O mesmo conceito também funcionaria para o meu lado cliente? Pq se funcionar, eu preciso apenas reescrever a minha interface web.
rtrind, bem-vindo à comunidade cara… bem, não tenho nenhuma experiencia profunda no projeto de sistemas, mas… algumas duvidas eu posso responder né… heheheh, 1) ai acho q entra em ação o teu conhecimento em OO, focando sempre os paradigmas… não sei dar detalhes quando patterns… 2) se a camada view da tua aplicação for web, necessariamente tu vai precisar de um container web sim… 3) é essa uma das idéias do mvc mesmo, quando tu tiver a camada de negócios pronta, extender a camada view pra uma aplicação desktop, ou web, ou mobile… ou oq for, será fácil, pois é uma camada lógica separada… onde a unica função será exibir, e não processar.
Obrigado pela ajuda. Ainda fica a dúvida a respeito da utilização de EJB em uma aplicação standalone. Alguém mais tem alguma informação?
Encontrei um framework chamado Hibernate e ele consegue fazer a persistência sem estar em um Container Web e por enquanto estou estudando ele para utilizar no projeto, mas ainda preferiria trabalhar com EJB na aplicação cliente. Se mais alguém souber de alguma informação ou de algum artigo falando ESPECIFICAMENTE de EJB para aplicativos standalone eu agradeço muito.
Amigo, quando digo EJB no cliente quero dizer que é uma aplicação que não possui um web container. Rodará apenas no Java, sem um servidor de aplicação. Sabe alguma forma de utilizá-lo desta maneira?
td bem, mas pra ti poder rodar teu EJB tu vai precisar de um container de EJB, ou seja… vai ser necessario q teu cliente tenha um servidor de aplicação instalado…, a não ser q… tu use a natureza distribuida do EJB, hehehe, q é tu ter uma máquina pra colocar teu container com os EJBs, e o cliente acessando essa máquina pela rede…
Entendi. Infelizmente não é esse o caso. Eu somente gostaria de reutilizar os beans de entidade de uma aplicação web em uma aplicação standalone, sem a necessidade de container algum, já que esse software tem que rodar somente baseado no VM do Java e BD.
Tanto que já estou usando o Hibernate, que supre minha necessidade de persistência de dados.
Eu tenho uma aplicação que será composta de duas partes. Uma é um software desktop. Outra é uma aplicação web. As duas terão que exibir mais ou menos a mesma coisa mas a aplicação Desktop será a responsável por efetuar o processamento. Como as duas terão que se utilizar dos mesmos componentes pensei em utilizar algum padrão de projeto que permitisse a mim reutilizar a maior parte do código utilizado no cliente na migração para a web.
A partir disso pensei no modelo MVC e no EJB para a persistência dos dados. Para a parte web tudo bem. Mas na aplicação desktop surge o problema da falta do container, que não pode ser obrigatório dentro deste ambiente. Sendo assim, se o EJB não rodar sem um container web eu não poderei usá-lo.
A solução que encontrei (se vc ver a data da pergunta inicial faz um tempinho) foi utilizar outro framework no lugar dele para realizar o papel de camada de persistência. No caso, selecionei o Hibernate (que funciona sem container).
ahhh agora sim… hehehehe, nunca usei o hibernate, mas ai da… só lembre-se q se for usar EJB, precisa de container… se for usar aplicação web, tb precisa de container… no caso, web.
Usa o Processo Unificado ou o RUP, sem duvida voce vai modelar sua aplicação de uma forma bem melhor, use o rational rose para a parte UML com plug para o eclipse assim enquanto vc modela as suas classes o codigo vai sendo gerado (CASE)
Sem duvida vc vai querer se aprofundar após usar pela primeira vez
Na boa, acho que você não entendeu a pergunta. Afinal de contas, o processo RUP realmente é muito bom, mas não tem nada a ver com implementação de camada de persistência, é algo muito mais amplo…
Olá, implemente o acesso ao banco usando o pattern DAO e crie uma implementação propria para o Hibernate. Acima desses DAO’s vc pode definir uma service layer para abstrair as chamadas feitas a eles. Tanto a aplicação web quanto a desktop trabalham sobre a service layer e assim vc reaproveita todo o seu model. Talvez caiba ainda um facade para abstrair a service layer como um subsistema a parte, mas pode ser complexidade desnecessaria a seu caso.
pegando uma carona na resposta do jack, tb faça uso dos padrões service locator, e business delegate, como tu tem a oportunidade de expandir o sistema pra clientes tanto web, quanto desktop, os dois podem fazer uso do Business delegate pra acessar o Facade, e servir como um proxy pra ele, atravéz de um service locator, q faz a procura pelo facade, abstratindo e centralizando assim, os codigos JNDI da aplicaçao…, sem contar q tanto o service locator, quanto o business delegate podem fazer uso de um cache pra ir salvando essas referencias procuradas, pra q na proxima vez tu precisar fazer uso, nao tenha q fazer uma nova procura