Pessoal como armazeno objeto em nivel de aplicação
Escopos Java EE para Web
- page
-request
-session
-application
dúvidas armazenar no contexto do jsf? spring, ejb?
JSF tem varios scoped - view - request - application … porem não queria armazer usando JSF
alguem ja fez isso?
Grato
off *** Po mano, tu com mais de 1k de mensagens escrevendo título de post em CAPS UP?
*** on
Você pode criar um MB por exemplo com a anotação @AplicationScoped e armazenar tudo dentro dele.
jakefrog
mudei o post
então isso no JSF 2, no JSF1.x ele não permite anotações isto é feito no arquivo de configuração do faces… porem isto não vem ao caso.p…
então é só uma Objeto (Lista ) saca? não quero criar um MB só pra isto
outra coisa
tem como fazer via spring ou ejb isto?
EJB nunca ouvi falar.
Spring não sei.
JSF 1? hum… Veja c isso te ajuda. http://www.i-coding.de/www/en/jsf/application/start-initialization.html
JSF 2 - pq não criar um MB? o custo é ridículo na memória e vale mais a pena pois é mais fácil controlar um objeto por get/set do que ServletContext.setAttribute(key,object); ServletContext.getAttribute(key);
Se for EJB 3.1 voce pode usar anotação @Singleton que é a mesma coisa que um Bean de aplicação
No meu caso , não seria isto … quero armazer este objeto em nivel de aplicação porem a cada 24 horas por exemplo teria que recarregar esta lista
então neste caso não queria fazer um Singleton
Voce poderia usar um EJB Singleton do EJB 3.1
e api @Schedule para modificar a lista neste EJB
Só porque é singleton não significa que o objeto não pode ser alterado ele so não pode ser instanciado mais de uma vez
Sim, é que por anotação não imaginava como fazer isto…
ai como vc mencionou @Schedule faz isto…
então é extamente isto que eu quero…
mais la vem… EJB 2.x estou usando…
tem como fazer isto no EJB 2? estou usando spring tambem …
andei pesquisando tambem o Ejb -Timer daria para fazer isto ?
Tipo no 3 eu marco o metodo com @TimerOut
e no 2?
…
Estava dando mais uma pesquisa e pensei de fazer desta formar
1º Criar um Singleton que é mesma coisa que o nivel de aplicação
2º-depois criar um Schedule no Spring para realizar o agendamento programado
<bean id="agendamento" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="empresaService" />
<property name="targetMethod" value="atualizarEmpresas" />
<property name="concurrent" value="false" />
</bean>
<bean id="atualizaEmpresa" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="agendamento" />
<property name="cronExpression" value="0 0 * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="atualizaEmpresa" />
</list>
</property>
</bean>
Pessoal o que acharam da classe com Singleton …
??
package br.com.bradesco.web.recebimentoarquivo.service.business.impl;
import java.util.ArrayList;
import java.util.List;
import br.com.bradesco.web.recebimentoarquivo.service.business.IEmpresaService;
import br.com.bradesco.web.recebimentoarquivo.service.business.bean.Empresa;
import br.com.bradesco.web.recebimentoarquivo.service.dao.IEmpresaDAO;
public class EmpresaService implements IEmpresaService {
// Injetado pelo Spring
private IEmpresaDAO empresaDAO;
private static List<Empresa> empresas ;
public EmpresaService() {
}
// GET E SET
public IEmpresaDAO getEmpresaDAO() {
return empresaDAO;
}
public void setEmpresaDAO(IEmpresaDAO empresaDAO) {
this.empresaDAO = empresaDAO;
}
public static synchronized List<Empresa> getEmpresas(){
if(empresas == null ){
System.out.println("CRIAA LISTA DE EMPRESA NO SINGLETON");
empresas = new ArrayList<Empresa>();
}
return empresas;
}
// METODOS
public List<Empresa> buscarTodos() {
if(getEmpresas().isEmpty() ){
System.out.println(" BUSCAR TODOS");
empresas = this.getEmpresaDAO().buscarTodos();
}
return empresas;
}
public void atualizarEmpresas(){
System.out.println("Atualiza A LISTA EMPRESA");
empresas = this.getEmpresaDAO().buscarTodos();
}
}
Então o meu simgleton está “nada haver”
não imagino como criar o singleton de empresas apartir de um objeto de instacia que seria o
this.getEmpresaDAO().buscarTodos();
nem sei se isto é certo