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.
Você quer dividir o sistema em módulos (componentes ou jars diferentes) ou deseja apenas separar os arquivos de configurações (XMLs)?
F
fdanicamargoPJ
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.
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.
C
CarneiroPJ
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?
F
fdanicamargoPJ
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.
C
CarneiroPJ
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?
F
fdanicamargoPJ
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?
C
CarneiroPJ
Eu fiz um post sobre o Struts2 há um tempo e utilizei essa forma de separação. Dê uma olhada.
F
fdanicamargoPJ
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:
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?
C
CarneiroPJ
Infelizmente não estudei o Struts2 a fundo, acho que seria melhor você buscar essa resposta no site do framework.
F
fdanicamargoPJ
Ok. Mesmo assim valeu as dicas.
Dando certo aki eu posto a solução que utilizamos.
Obrigada.
O
one-dreamerPJ
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!