Olá. Temos um sistema funcionando, escrito em uma linguagem proprietária, que precisamos reescrever em tecnologia opensource.
Este sistema utiliza a seguinte infra-estrutura:
Servidor web http com cgi;
requisições são encaminhadas por middleware até o servidor linux/unix;
rotinas escritas na linguagem citada tratam a requisição (acesso a dados em db relacional / acesso a diretórios e arquivos do s.o., executa comandos do s.o., armazenam dados de sessão, etc);
templates HTML são lidos, substituindo marcações específicas com dados e resultados, retornando a página pronta para o cgi que exibe o resultado na web.
Gostaria de sugestões de quais tecnologias JAVA utilizar, tendo como premissa o maior reaproveitamento possível de coisas já existêntes no sistema (templates web, tabelas do banco de dados…). Algum framework faz algo parecido? seria melhor desenvolver servlets específicas?
Exemplo: já fiz um teste laboratório utilizando programa cgi em Ruby com xml/rpc acionando rotinas Ruby no servidor linux/unix para tratar a lógica, ler os templates e devolver os resultados. Funciona, mas gostaria de analisar outras alternativas.
Tecnologia Java a utilizar : Servlet API, JDBC
Como vc a usa é vc que escolhe.
Implementar um servlet para cada requisição não é como se faz hoje. Vc implementa um unico servlet que delega a classes POJO as operações. O Servlet cuida de coisas burocráticas e de estrutura. Vc pode criar isso na mão ou usar um framework web já pronto. Se for usar um já pronto use o Spring MVC.
Para acesso ao banco use JDBC. Acho que não precisa de nenhum ORM neste momento. Só garanta que todo o acesso ao JDBC é feito em uma unica camada.
O banco de dados vc pode usar o que já tem.
Para o resto é só usar a biblioteca padrão do java.
P.S. Faltou falar dos templates.
Normalmente se usa JSP para renderizar o HTML outra opção é usar o Freemarker.
Dependendo dos seus templates vc pode ainda criar um mecanismo especifico que renderize os templates que já tem. Para isso vc usaria um servlet tb.
Então usar servlets pode ser uma boa.
Tem uma característica interessante que eu gostaria de manter: Nem sempre o servidor web (http) estará na mesma máquina da aplicação. Como ficaria a implementação da comunicação entre as servlets e as classes da aplicação? Ou seria mesmo recomendável ter o container de servlets no servidor linux/unix junto da aplicação?
[quote=ctdaa]Então usar servlets pode ser uma boa.
Tem uma característica interessante que eu gostaria de manter: Nem sempre o servidor web (http) estará na mesma máquina da aplicação. Como ficaria a implementação da comunicação entre as servlets e as classes da aplicação? Ou seria mesmo recomendável ter o container de servlets no servidor linux/unix junto da aplicação?[/quote]
depende do que vc quer dizer com “aplicação”
Se vc está pensando nas classes de entidade ou comunicação com banco, não vale separar.
Se está pensando num sistema independente ao qual esse está ligado , ai já é separado por natureza.
Como aplicação eu quero dizer a parte do sistema que “faz o que tem que ser feito”, ou seja, neste caso interage com o sistema Unix/Linux (acessa recursos, executa comandos, etc). Pode ser considerada a parte do acesso ao banco também… mas esta parte não é o crítico neste sistema.
Citando um caso: na hora de implantar o sistema no servidor X o administrador (cliente) pergunta: o que você precisa?
eu respondo: - Preciso instalar este pacote de programas e preciso de um Servlet container (tomcat, etc).
O administrador diz então: tomcat eu já tenho no servidor Y, não quero instalar outro porque senão é mais um para administrar.
Neste exemplo as servlets do servidor Y terão que acionar os objetos da “aplicação” no servidor X.
[quote=ctdaa]Como aplicação eu quero dizer a parte do sistema que “faz o que tem que ser feito”, ou seja, neste caso interage com o sistema Unix/Linux (acessa recursos, executa comandos, etc). Pode ser considerada a parte do acesso ao banco também… mas esta parte não é o crítico neste sistema.
Citando um caso: na hora de implantar o sistema no servidor X o administrador (cliente) pergunta: o que você precisa?
eu respondo: - Preciso instalar este pacote de programas e preciso de um Servlet container (tomcat, etc).
O administrador diz então: tomcat eu já tenho no servidor Y, não quero instalar outro porque senão é mais um para administrar.
Neste exemplo as servlets do servidor Y terão que acionar os objetos da “aplicação” no servidor X.
[/quote]
Eu não acho que faz sentido separar porque se separar vai precisar de um outro webcontainer (ou um AS que tb um webcontainer) para fazer a comunicação. Claro que pode usar sokets e RMI mas isso não é nada prático.
Por outro lado se a aplicação precisa executar comandos no linux ( o que não é normal) isso significa que está amarrada ao OS, logo , menos sentido faz seaprar.
O que vc precisa ?
Preciso de um linux com servlet container e acesso ao banco x.
Ok, acho que dá para convencer o administrador…
Obrigado pelas dicas. Vou montar um ambiente laboratório com estas características para fazer umas simulações.
Qualquer dúvida volto a postar.