| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/02/2007 15:53:39
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline
|
Boa noite pessoal,
Bem, como todos sabem, o mentawai usa configurações programaticas na class do AppManager.
Bem, imaginemos um projeto com uns 15 modulos. Cada modulo com 10 telas. E cada tela tendo 2 actions/inneraction. Se cada action/inneraction levar 5 ligas de codigo para ser declarada junto com seus filtros, teremos, 750 linhas de código... (tah eh um projeto grande)!
Meu, vamos e viemos, vai ficar confuso pacas.
Uma boa solução, seria quebrar os AppManagers em vários arquivos (1 por modulo seriam 50 linhas). Eh uma alternativa sensata que ajudaria na organização de qualquer projeto.
Bem, como o arquivo de configuração é feito em java, dah pra fazer com q isso seja distribuido na mão. Mas o mentawai não suporta isso nativamente.
Para esses fins, criei uma nova classe que extende org.mentawai.core.ApplicationManager, que chamei de MultiApplicationManager.
Essa classe abre as portas para a fragmentação dos arquivos de configuração do mentawai de forma rápida e transparente.
A MultiApplicationManager é uma classe abstrata que obriga a implementação do método registryManagers().
Nesta podem ser registrados outros appManages, que teram todas as actions, innerAction, filtros, consequence concatenados dentro de um único AppManager:
Code:
public class ApplicationManager extends MultiApplicationManager {
public void registryManagers() {
registry(ModuleOneApplicationManager.class);
registry(ModuleTwoApplicationManager.class);
registry(Module...ApplicationManager.class);
}
}
Assim, de forma facil é possível agregar diversos AppManagers em um único.
Essa funcionalidade já está disponivel no SVN, saindo no proximo BETA/versão.
Comentários?
VELO
|
_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2007 05:55:21
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Velo,
Essa solução "matou a pau!", acho que a ideia realmente é mt boa, estou desenvolvendo um sistema para uma Instituição que tem mais ou menos esse peso de desenvolvimento que vc mostrou acima e já estava começando a ter medo do tamanho do ApplicationManager.
Muito boa... assim que eu puder e voltar de ferias estarei testando a ideia.
Parabéns.
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2007 08:34:51
|
RubemAzenha
Joined: 30/06/2005 23:12:02
Messages: 472
Location: São Paulo, SP
Offline
|
No futuro poderemos criar um jeito de todo o classpath ser escaneado, buscando por todos os ApplicationManagers e carregando eles
Seria legal, não?
|
Mentawai Developer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 07:40:15
|
Raimundo Norberto
Joined: 18/12/2006 11:29:03
Messages: 33
Location: Belém, Pará
Offline
|
Eu também estive pensando nisso...
Num projeto grande, editar o ApplicationManager ia dar (quase) tanto trabalho quanto editar um XML...
A idéia do Velo é muito boa.
A idéia do Rubem também é legal. Mas acho que esse escaneamento deveria ser apenas em um package padrão, ou em um definido pelo usuário.
IMHO escanear toda a aplicação poderia acabar escondendo algum ApplicationManager no meio de muitos packages, o que dificultaria a manutenção e traria algumas dores de cabeça pro desenvolvedor se ele não soubesse exatamente aonde cada ApplicationManager está.
Até logo!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 07:47:09
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline
|
Axo melhor naum escanear nada, por que N modulos podem significar N .jar dentro do .war!
Jah vi isso algumas vezes. Cada modulo da aplicação ser desenvolvido em um projeto do eclipse, e ser empacotado em jars idependentes.
Mas vcs q mandam!
VELO
|
_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 11:16:18
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Muito bom, Velo. Parabéns pela idéia/implementacao.
Mudei registry para register.
Code:
public class ApplicationManager extends MultiApplicationManager {
public void registerManagers() {
register(ModuleOneApplicationManager.class);
register(ModuleTwoApplicationManager.class);
register(Module...ApplicationManager.class);
}
}
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2007 05:50:28
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Eu estou ansioso por esta alteração quando q sai ?????
To de férias e quando voltar já tenho um projeto pra fazer que isso ficaria perfeito....
Abraços
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2007 07:21:31
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline
|
Tah no SVN...
Possivelmente tah no jar beta do site....
Ou pega do svn mesmo.
VELO
|
_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2007 10:15:28
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Tá no jar beta:
http://www.mentaframework.org/beta/mentawai.jar
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/03/2007 14:31:26
|
Ironlynx
Joined: 28/10/2005 17:35:38
Messages: 328
Offline
|
velo, eu não sei o que vc anda fumando para ter umas idéias punk dessas, mas genial!
Tá no jar beta:
Essa é a versão mais atual?
|
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/03/2007 16:19:33
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline
|
Fumei um pokinho de str*ts.
Com flex e umas coisinhas a mais.
VELO
|
_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/03/2007 14:04:02
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Pessoal a ideia de Modularizar o ApplicationManager é show mas estou tendo um problema estou fazendo um teste simples e obtenho o serguinte erro:
Code:
06/03/2007 17:08:33 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet Controller
java.lang.RuntimeException: Unable to instanciate the class: Class
at org.mentawai.core.MultiApplicationManager.register(MultiApplicationManager.java:51)
at ApplicationManager.registerManagers(ApplicationManager.java:9)
at org.mentawai.core.MultiApplicationManager.<init>(MultiApplicationManager.java:25)
at ApplicationManager.<init>(ApplicationManager.java:5)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at java.lang.Class.newInstance0(Class.java:350)
at java.lang.Class.newInstance(Class.java:303)
at org.mentawai.core.Controller.initApplicationManager(Controller.java:192)
at org.mentawai.core.Controller.init(Controller.java:135)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:757)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.ClassCastException: ApplicationManagers.SitesApplicationManager
at org.mentawai.core.MultiApplicationManager.register(MultiApplicationManager.java:47)
... 25 more
É apenas um teste mas não consegui fazer funcionar.
Code:
import org.mentawai.core.MultiApplicationManager;
import ApplicationManagers.CategoriaApplicationManager;
import ApplicationManagers.SiteApplicationManager;
public class ApplicationManager extends MultiApplicationManager {
public void registerManagers() {
register(CategoriaApplicationManager.class);
register(SiteApplicationManager.class);
}
}
Uma luz ?????
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/03/2007 14:18:32
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Putzzz.... Desconsiderem o problema... foi erro meu não ter lido todo o log....
Esqueci de extender applicationManager na classe site....
Code:
public class SitesApplicationManager extends org.mentawai.core.ApplicationManager {
}
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/03/2007 15:41:43
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline
|
Exatamente!
VELO
|
_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/03/2007 15:49:26
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline
|
Detalhe...
A tua ide deve ter dado um warning aqui:
register(SiteApplicationManager.class);
VELO
|
_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer |
|
|
 |
|
|