this may be what you're looking for ActionContext context = ActionContext.getContext();then use context.getApplication() to acquire your Map http://www.opensymphony.com/webwork/api/com/opensymphony/xwork/ActionContext.html#getApplication()
and to acquire specific keyed value try get(DATABASE_KEY); Saludos / Martin ______________________________________________ Disclaimer and confidentiality note Everything in this e-mail and any attachments relates to the official business of Sender. This transmission is of a confidential nature and Sender does not endorse distribution to any party other than intended recipient. Sender does not necessarily endorse content contained within this transmission. > Date: Thu, 25 Sep 2008 22:37:05 -0300 > Subject: Re: ApplicationListener issue > From: [EMAIL PROTECTED] > To: user@struts.apache.org > CC: user@struts.apache.org > > > > Hi RDB, > > > > Thanks for your answer. I think I'm doing it OK though, let me paste here the > code of my app: > > > > import java.util.Map; > > > > import org.apache.log4j.Logger; > > import org.apache.struts2.interceptor.ApplicationAware; > > > > import database.DBConnector; > > > > import com.opensymphony.xwork2.ActionSupport; > > > > public class MyAction extends ActionSupport implements ApplicationAware { > > > > private static Logger logger = > Logger.getLogger(MyAction.class); > > > > private Map application; > > > > > > public void setApplication(Map value) { > > application = value; > > } > > > > public static final String DATABASE_KEY = > "database"; > > > > > > public DBConnector getDatabase() { > > Map application = getApplication(); > > > > if(application == null) { > > logger.error("null > application context"); > > return > null; > > } > > return > application.get(DATABASE_KEY); > > } > > > > /** > > * <p>Provide application context.</p> > > */ > > public Map getApplication() { > > return application; > > } > > } > > > > This is the Action and the getApplication call is giving me a null application > object, what am I doing wrong? > > > > Thank you, > > > > Martin > > > > > > > > > Not knowing the whole story, I may be off target... However, your code > > > below is suspect to me: > > > > > > public class MyAction extends ActionSupport implements ApplicationAware { > > > > > > public DBConnector getDatabase() { > > > > > > Map application = getApplication(); > > > > > > Object db = application.get(DATABASE_KEY); > > > > > > .... > > > > > > } > > > > > > At the top of the class you should have a variable declared called: > > > > > > private Map application; > > > > > > You need to implement/override setApplication(...), like so: > > > > > > public void setApplication(Map map) { > > > this.application = map; > > > } > > > > > > When struts enters your class it will set the application variable for > > > you. Then inside your method above, you can dispense with: > > > > > > Map application = getApplication(); > > > > > > As Laurie suggested, make sure you have (1) correct. > > > > > > If I'm missing the point, ignore my email. > > > > > > RDB > > > > > > > > > Martín Mauri wrote: > > >> Hi Laurie, I've checked all the points that you suggested, and I > > >> think that #3 could be a possibility. The thing is that the > > >> database object is not null when I do the > > >> context.setAttribute(DATABASE_KEY, database); But in the Action > > >> that implements the ApplicationAware interface I did the following: > > >> Inside the method that gets invoked I did: Map application = > > >> getApplication(); and it turned out to be that the application > > >> object is null. Am I missing something in the configuration files? > > >> Is it required to do an interceptor to transfer this object from > > >> the Application Listener to my Action class? > > >> > > >> I'll appreciate your help, > > >> > > >> Thank you. Martin > > >> > > >> ----- Original Message ----- From: "Laurie Harper" > > >> <[EMAIL PROTECTED]> To: <user@struts.apache.org> Sent: > Thursday, > > >> September 25, 2008 4:45 AM Subject: Re: ApplicationListener issue > > >> > > >> > > >> Martín Mauri wrote: > > >>> Hi all, I'm having an issue while implementing an App Listener > > >>> for my App. Thing is that the ApplicationListener appears to be > > >>> working fine, as from the logs I can see that the > > >>> contextInitialized method is being invoked. > > >>> > > >>> Inside the method I do this call, same way as the Mailreader > > >>> sample app does: > > >>> > > >>> context.setAttribute(DATABASE_KEY, database); The problem comes > > >>> when from my action: > > >>> > > >>> public class MyAction extends ActionSupport implements > > >>> ApplicationAware { > > >>> > > >>> public DBConnector getDatabase() { > > >>> > > >>> Map application = getApplication(); > > >>> > > >>> Object db = application.get(DATABASE_KEY); > > >>> > > >>> .... > > >>> > > >>> } > > >>> > > >>> db is returning null, like if the object got lost somewhere... > > >>> > > >>> here's the fragmen of my web.xml: > > >>> > > >>> <listener> > > >>> > > >>> <listener-class> > > >>> > > >>> myApp.ApplicationListener > > >>> > > >>> </listener-class> > > >>> > > >>> </listener> > > >>> > > >>> Any ideas? > > >> > > >> 1) there's something wrong in your implementation of > > >> ApplicationAware and/or your getApplication() method > > >> > > >> 2) the 'database' variable was null when you called setAttribute() > > >> in your listener > > >> > > >> 3) you have code somewhere which is overwriting the > > >> application-scope property with a null value after the listener > > >> initializes it > > >> > > >> 4) the value of DATABASE_KEY is different in the listener and the > > >> action > > >> > > >> Those are the most obvious places to start. In fact, I can't think > > >> of anything else it could be unless there's something very funky > > >> going on, in which case I doubt it can be diagnosed through a > > >> mailing list... > > >> > > >> L. > > >> > > >> > > >> --------------------------------------------------------------------- > > >> To unsubscribe, e-mail: [EMAIL PROTECTED] For > > >> additional commands, e-mail: [EMAIL PROTECTED] > > >> > > >> > > >> __________ Información de NOD32, revisión 3469 > (20080924) > > >> __________ > > >> > > >> Este mensaje ha sido analizado con NOD32 antivirus system > > >> http://www.nod32.com > > >> > > >> > > >> > > >> --------------------------------------------------------------------- > > >> To unsubscribe, e-mail: [EMAIL PROTECTED] For > > >> additional commands, e-mail: [EMAIL PROTECTED] > > >> > > >> > > > > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > _________________________________________________________________ See how Windows connects the people, information, and fun that are part of your life. http://clk.atdmt.com/MRT/go/msnnkwxp1020093175mrt/direct/01/