Olá Pessoal, aki na empresa temos uma aplicação web construida em java, com struts e hibernate e agora precisamos dividí-la em módulos, tipo, modulo de noticias, loja/vitrine, carrinho, etc.
O problema é q estamos encontrando dificuldades em fazer as divisões dos arquivos struts e hibernate.
Alguem já passou por uma experiência parecida e pode me dar umas dicas?
Li sobre algumas ferramentas como o XDoclet que fazem a divisão do código automático, mas seria para o inicio da programação e precisamos para “dividir” uma aplicação pronta.
já criamos arquivos separados de struts para teste e o struts-config consegue vê-los, porém quando fazemos uma chamada a um ‘path’ dentro do ‘struts filho’ a aplicação não interpreta, como se ela não encontrasse o arquivo a ser carregado.
Estamos tentando com o SwitchAction, mas não sabemos bem como fazer.
Se alguem tiver alguma sugestão eu agradeceria.
Obrigada.
Você quer dividir o sistema em módulos (componentes ou jars diferentes) ou deseja apenas separar os arquivos de configurações (XMLs)?
Oi, preciso ter tudo separado em jars.
Ter um jar que englobe arquivos hibernate, struts, classes em um unico jar que vai ser chamado por um modulo principal, o qual vai habilitar os modulos que interessam para cada cliente.
Uma boa seria a utilização do Maven.
Já está sendo cogitada a utilização do Maven 2, mas só contempleria estrutura.
Primeiro eu preciso comunicar meus arquivos struts, o config e o que gerencia meu ‘modulo teste’.
A aplicação ainda não está dividida e só será após todas as comunicações dos arquivos struts e hibernate estarem funcionado na atual hierarquia web padrão.
Ou seja, foi pega a aplicação web e criado um outro arquivo struts para o módulo (struts-noticias.xml), neste foi colocado todas as tags e declarações pertencentes ao módulo e do struts-config.xml foi retirado. Foi feito no web.xml o init-param para o struts-noticias.xml. Contudo, quando clico no menu da aplicação para fazer a chamada do path que se encontra no struts-noticias.xml é como se ele não fosse visto, pois ele dá o seguinte erro: HTTP Status 404 - Invalid path /admin/marketing/noticia was requested. Se eu inicializar este struts no web.xml dentro da mesma tag do config, separado por vírgula ele funciona, porém não é uma boa prática de programação.
Bem, espero ter exclarecido um pouco mais da situação e que vc possa me ajudar.
Obrigada.
Você está usando qual versão do Struts?
E por que não é uma boa prática de programação configurar arquivos XMLs no web.xml separados por vírgula? Onde você leu sobre isso?
Na própria documentação da apache onde é recomendado que se deixe configurado somente um arquivo e não caracterizaria a modularização que se quer aplicar.
A versão do Struts que estamos usando é a 2.1.4.
No Struts2 você pode ter um arquivo de configuração padrão e separar os arquivos de configurações em vários arquivos, da forma que você deseja. Já tentou fazer assim?
Sim, isso q estamos tentando, porém faltam algumas configurações para os arquivos filhos serem chamados.
Você pode me dar algum exemplo de arquivos de configuração chamando os demais?
Eu fiz um post sobre o Struts2 há um tempo e utilizei essa forma de separação. Dê uma olhada.
Teu post é bem interessante, mas no meu projeto aki não consegui replicar bem certo o q vc propôs lá.
Eu retirei a chamada do arquivo filho do web.xml e no struts-config.xml eu inseri as seguintes linhas:
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<include file="moduloStruts/struts-noticias.xml"/>
Minha pasta moduloStruts q contém o arquivo filho está no mesmo nivel do meu arquivo struts-config.xml, e ele está dando erro de servlet, como se não estivesse reconhecendo o comando include ou o path passado.
Aproveitando a deixa, vc sabe como funciona o switchMod e o SwitchAction? Como eu configuro os parâmetros para ele?
Infelizmente não estudei o Struts2 a fundo, acho que seria melhor você buscar essa resposta no site do framework.
Ok. Mesmo assim valeu as dicas.
Dando certo aki eu posto a solução que utilizamos.
Obrigada.
Bom dia,
o struts já está modularizado com o uso do switchAction.
Meu obstáculo agora tá sendo fazer a aplicação ver os arquivos dentro do jar, como minha biblioteca.
O caso é que eu já tenho uma aplicação toda montada, mas a sua manutenção e correção de erros é muito “cansativa” pela amarração dos arquivos.
O que eu tentei fazer foi pegar todos os arquivos comuns a um contexto real e separá-los em um jar, deixando os arquivos de configuração e de uso comum para aplicação pra fora.
Mas não tá dando muito certo, eu precisava que estes módulos ficassem independentes, pois imagina como farei pra dar manutenção nisso. Descompactar o jar do módulo, aí não sei se este vai rodar descompactado já que a estrutura interna do jar é diferente da aplicação, aí desconsiderando isso, compactar de novo testar, se não funcionar volto a descompactar…loop.
Se tiver alguma idéia de como modularizar isso que funcione, me oriente. Abraço!