Jeffrey, You need to make sure your FactoryBean returns false for the isSingleton and you might want to add lazy-load as well. (I think singleton=false implies lazy load, but I'm not sure) Tom
On 1/31/07, Jeffrey Hau <[EMAIL PROTECTED]> wrote:
Hi Tom, I have tried your suggestion, my applicationContex.xml is now defined as, <bean id="scFactoryBean" class="StrutsServletContextLoader"/> <bean id="servletCtx" factory-bean="scFactoryBean" factory- method="getServletContext"/> <bean id="userService" class="user.RdfUserService"> <constructor-arg index="0"> <bean class="org.springframework.web.context.support.ServletContextResource"> <constructor-arg index="0" ref="servletCtx"/> <constructor-arg index="1" type=" java.lang.String" value="/ resources/users.rdf"/> </bean> </constructor-arg> </bean> my StrutsServletContextLoader class consists of one method public ServletContext getServletContext() { return ServletActionContext.getServletContext(); } i am getting error from spring complaining missing servlet context. You mentioned ServletActionContext needs to the executed within the context of a webwork request, i think the problem is related to that. Do you know how can i make my StrutsServletcontextLoader be executed within a webwork request? many thanks Jeff On 31 Jan 2007, at 13:52, Tom Schneider wrote: > It would be very easy to create a Spring FactoryBean for this. > (Checkout the Spring Documentation if that doesn't make sense) > Then, to access the servlet context, just do a: > > ServletContext servletContext = > ServletActionContext.getServletContext(); > > The FactoryBean would allow you to use dependency injection in > spring to inject the servlet context into any spring bean. (I'm > doing a similar thing with some of the our legacy services and > components) You could even convert the ServletContext into a Map > to decouple yourself from the servlet API. That way your process > beans would only be dependent on a Map instead of a > ServletContext. Keep in mind that the ServletActionContext is a > thread local, so it must be executed from within the context of a > webwork request. > Tom > > > Jeffrey Hau wrote: >> Hi Joe, >> Thanks for the helpful information. I am just wondering is it >> possible to get the ServletContext object in my spring >> applicationContext.xml? What i am trying to do now is to create a >> Resource object (ServletContextResource) and inject into a service >> class and then use this service class in a struts action. At the >> moment, I have to pass in the resource path (as a string) into the >> action, instantiate the ServletContextResource in the action then >> pass it to the service class. >> >> many thanks, >> >> Jeff >> >> On 31 Jan 2007, at 12:53, Joe Germuska wrote: >> >>> You need to make sure that your action is passing through an >>> interceptor-stack that includes ServletConfigInterceptor >>> >>> http://struts.apache.org/2.x/core/apidocs/org/apache/struts2/ >>> interceptor/ServletConfigInterceptor.html >>> >>> >>> The struts-default package does include this. >>> >>> http://struts.apache.org/2.x/docs/struts-defaultxml.html >>> >>> Another thing you can do is call the static method >>> ServletActionContext.getServletContext() but this would be harder >>> to support >>> in a unit testing environment. If you implement >>> ServletContextAware, then >>> you could provide a mock ServletContext implementation in your >>> unit test >>> setup, while you'd have a lot more awkward setup to do to make >>> sure that >>> ServletActionContext.getServletContext was prepared to return a >>> usable >>> value. >>> >>> Joe >>> >>> >>> On 1/31/07, Nagraj Rao <[EMAIL PROTECTED]> wrote: >>>> >>>> were u actually able to get the servletContext Object thru >>>> servletContextAware?? I'd tried it but couldn't get it :( >>>> do we need to do any additional stuff for that?? >>>> >>>> ----- Original Message ----- >>>> From: "Jeffrey Hau" <[EMAIL PROTECTED]> >>>> To: "Struts Users Mailing List" <user@struts.apache.org> >>>> Sent: Wednesday, January 31, 2007 4:55 PM >>>> Subject: [s2] getting servletContext in actions >>>> >>>> >>>> > Hi, >>>> > If i need to get a servletContext object in my action class, is >>>> > implementing the ServletContextAware interface the standard way >>>> of doing >>>> > this? Is there any other alternatives? >>>> > >>>> > thanks, >>>> > >>>> > Jeff >>>> > >>>> > >>>> ------------------------------------------------------------------- >>>> -- >>>> > 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] >>>> >>>> >>> >>> >>> --Joe Germuska >>> [EMAIL PROTECTED] * http://blog.germuska.com >>> >>> "The truth is that we learned from João forever to be out of tune." >>> -- Caetano Veloso >> >> >> --------------------------------------------------------------------- >> 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] >