Como obter obter o contexto da aplicação?

Olá pessoal,

Estou precisando obter o contexto da aplicação, mas não estou na classe do mesmo… como poderia fazer isso?

Trecho da classe onde recupero o objeto servlet para obtenção do contexto da aplicação… tentarei fazer isso a partir de outra classe instanciado o método alimentaCombos()

[code]public void alimentaCombos(){
alimentaCombos(servlet);
}

public static void alimentaCombos(ActionServlet servlet){
    ControleAnuncio.alimentaAdServers(servlet);
}[/code]

Através do método alimentaCombos() eu acesso a classe acima com a outra classe que tem o seguinte código:public class AlimentaCombos extends TimerTask{ public void run() { AdsDetalheAction ada = new AdsDetalheAction(); ada.alimentaCombos(); System.out.println("atualizei contexto"); LogSis.logar(LogSis.LOG4J_DEBUG_LEVEL,"atualizei contexto"); } }O objetivo é o seguinte: através da classe AlimentaCombos instancio o método da primeira classe onde posso recuperar o parametro servlet dessa mesma classe ai com esse parametro acesso o método limentaCombos(ActionServlet servlet) mas ele não recupera o objeto servlet dessa forma, através de instancia…

Heeeelp!

Obrigado!

Não entendi muita coisa, o que você pretende com isso exatamente?

Veja se assim fica mais claro:

[code]import java.util.GregorianCalendar;
import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**

  • Classe responsavel por executar tarefas agendadas: alimentar dados no combo.
  • @author rodrigo.marini
    */
    public class ScheduleCombos implements ServletContextListener{
    Timer timer = null;
    // Invocado pelo container no inicio da aplicação.
    public void contextInitialized(ServletContextEvent sce) {
    timer = new Timer();
    timer.schedule(new AlimentaCombos(), 0);
    GregorianCalendar gc = new GregorianCalendar(); //variável que irá receber a hora da próxima atualização
    if (gc.get(GregorianCalendar.MINUTE) >= 6){
    // ajustar hora atual+uma hora : 05min : 00 segundos
    gc.add(GregorianCalendar.HOUR, gc.get(GregorianCalendar.HOUR)+1);
    }
    gc.set(GregorianCalendar.MINUTE, 5);
    gc.set(GregorianCalendar.SECOND, 0);
    timer.scheduleAtFixedRate(new AlimentaCombos(), gc.getTime(), 3600000);
    }
    // Invocado no término da aplicação.
    public void contextDestroyed(ServletContextEvent sce) {
    if(timer!=null) timer.cancel();
    }
    }[/code]

[code]/**

  • Classe usada para acessar o método responsável pela carga de dados nas combos.

  • @author rodrigo.marini
    */
    public class AlimentaCombos extends TimerTask{
    // Responsável pela execução da tarefa agendada: carregar os combos.
    public void run() {
    AdsDetalheAction ada = new AdsDetalheAction();
    ada.alimentaCombos();
    System.out.println("atualizei contexto");
    LogSis.logar(LogSis.LOG4J_DEBUG_LEVEL,"atualizei contexto");
    }
    }[/code][code]public class AdsDetalheAction extends Action {

    /*

    • (non-Javadoc)
    • @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping,
    •  org.apache.struts.action.ActionForm,
      
    •  javax.servlet.http.HttpServletRequest,
      
    •  javax.servlet.http.HttpServletResponse)
      

    */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {

/**
* Usado como ponte para outra classe carregar o servlet no contexto da aplicação, acessando
* alimentaCombos(ActionServlet).
/
public void alimentaCombos(){
alimentaCombos(servlet);
}
/
*
* Carrega no contexto da aplicação, se não estiverem presentes, os dados utilizados nas páginas de Anúncios
* @param servlet objeto para obtenção do contexto da aplicação onde os dados serão salvos
*/
public static void alimentaCombos(ActionServlet servlet){
ControleAnuncio.alimentaAdServers(servlet);
}
[/code]

essa é a idéia!!Mas não funciona, porém se a chamada fosse feita diretamente da classe AdsDetalheAction dessa forma:

(...)
alimentaCombos(servlet);
public static void alimentaCombos(ActionServlet servlet){
        ControleAnuncio.alimentaAdServers(servlet);
}

Daria certo… mas tem que ser da outra forma!

Obrigado, já resolvi!!
Abraço!