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]