[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
ApplicationManager distribuido!  XML
Forum Index -> Comentários Gerais Go to Page: 1, 2, 3, 4, 5 Next 
Author Message
velo


[Avatar]

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
[Email] [MSN]
IceW0lf


[Avatar]

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
RubemAzenha


[Avatar]
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
[WWW] [MSN]
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!
velo


[Avatar]

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
[Email] [MSN]
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

IceW0lf


[Avatar]

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
velo


[Avatar]

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
[Email] [MSN]
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

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/
[WWW]
velo


[Avatar]

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
[Email] [MSN]
IceW0lf


[Avatar]

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
IceW0lf


[Avatar]

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
velo


[Avatar]

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
[Email] [MSN]
velo


[Avatar]

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
[Email] [MSN]
 
Forum Index -> Comentários Gerais Go to Page: 1, 2, 3, 4, 5 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team