Olá pessoal,
estou em uma discursão interminável com um amigo, e nao chegamos a uma conclusão…
O problema é que ele resolveu separar o struts-config.xml dele em varios pedaços, até aí tudo bem, mas para isso, teria que criar muitos <init-param> com o mapeamento de cada um, pois ele quer separar por rotinas, e o sistema é grande, mais ou menos umas 200 rotinas. Já que esses parametros são guardados na memória (para o servlet), não seria um absurdo vc criar mais ou menos 200 <init-param> mapeando esses arquivos e guardá-los todo na memória?
Por favor, acabem com essa discurssão, hehe
cara…acho ki isso não vai influenciar mto no consumo de memoria,
pois o struts tbem gosta de memoria, pois o arquivo struts-config e carregado inteiro para a memoria !!!
Se o arquivo for muito grande, realmente fica melhor trabalhar com ele fragmentado, ainda mais se for trabalhar em equipe.
Talves vcs poderiam criar os “struts-configs” separados, e na hora de gerar o war, uni-los usando por exmplo, o xDoclet !
Conecte algum profiler no seu server, como o profiler pack do Netbenas, e verifque se o consumo de memoria !!!
Os números não mentem !! ou qse nunca
fiquei meio curioso pra saber como o web.xml é lido pelo container.
Olhei o codigo do tomcat (ha…o consumo de mem depende de como o servidor esta implemetado !!), e tirem suas conclusões:
os parametros são armazenados em um HashMap
/**
* The initialization parameters for this servlet, keyed by
* parameter name.
*/
private HashMap parameters = new HashMap();
e abaixo o metodo que inclui os parametros no hashmap
/**
* Add a new servlet initialization parameter for this servlet.
*
* @param name Name of this initialization parameter to add
* @param value Value of this initialization parameter to add
*/
public void addInitParameter(String name, String value) {
synchronized (parameters) {
parameters.put(name, value);
}
fireContainerEvent("addInitParameter", name);
}
Isso fica armazendo no contexto da aplicação !!
um teste bem xula, seria vc criar uma pequena aplicação com o codigo acima e fazer uma chamada ao metodo addInitParameter e depois 200 chamadas…
concordo com vc q fragmentar é uma boa saída, mas fragmentar na hora de gerar o .war, uni-los atraves do ant, que aliás, é o que eu faço.
O problema não é carregar o struts-config na memoria, que é inevitável, mas sim o uso desnecessário de init-param.
Não acho uma boa prática, com tanta preocupação em usar a menor quantidade possivel de memória e recursos para otimização memória (principalmente evitar o conhecido new …), tipo cache de classes, singleton, etc…, eu venho e carrego mais de 200 init-param para o servlet do struts.
Não acha que desta forma, estamos indo na contramão?
na verdade, acho q seria mais uma filosofia (de que se deve otimizar sempre que possível a alocação de memória), do que uma perda de memória considerável (a não ser que o sistema tenha milhares de milhares de rotinas), ja que segundo nosso amigo acima, as variaveis são guardadas em um hashmap.
Continuo com a minha idéia que mesmo que consuma pouca (que é uma coisa que eu ja sabia), vai consumir mais do que o necessário,
Cara…apenas minha opnião:
Se isso fosse a 10 ou mais anos atras, eu ate concordaria com vc !!
Isso em ralação ao web.xml e aos “inits”
A diferença de consumo é muito baixa e é executado apenas nas inicialização da aplicação !!
Agora qdo desenvolvemos uma app, essa filisofia deve ser constante !!!
concordo com vc sobre o baixo uso, mas se for assim, comecaremos a jogar tudo na aplicação, e um dia a casa cai…
tbem não chute o balde…
estamos falando apenas de init-params !!!