You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by strutsdev43 <na...@gmail.com> on 2009/12/09 16:28:54 UTC

ActionContext.getContext() is returning null

Hi

Can someone please help with the issue that I am seeing with Struts 2.1.8.1. 

I have a page index.jsp which is protected by role "role1". when the user
tries to access index.jsp, if the user is not authorized, the user is
forwarded to a FatalErrorServlet. 

I have configured in web.xml to forward it to a FatalErrorServlet, which
takes care of displaying a login freemarker template.

FatalErrorServlet is trying to access the ActionContext using
ActionContext.getContext(), but it is returning null. 

I have StrutsPrepareFilter, Sitemesh PageFilter, StrutsExecuteFilter
configured in my web.xml, but looks like when the request gets forwarded to
the FatalErrorServlet, it doesn't go through these filters. 

I tried setting the <dispatcher> element for these filters to REQUEST,
FORWARD, IINCLUDE but nothing works.

I am using Struts 2.1.8.1, app server is weblogic 10.0mp1.

my web.xml contents
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  
    <filter> 
        <filter-name>struts-prepare</filter-name>       
       
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
    </filter>

    <filter>
        <filter-name>sitemesh</filter-name>
       
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
    </filter>    

    <filter> 
        <filter-name>struts-execute</filter-name>       
       
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
    </filter>
  
    <filter-mapping>
        <filter-name>struts-prepare</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>
    <filter-mapping>
        <filter-name>sitemesh</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts-execute</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>  

  <servlet>
    <servlet-name>FatalErrorServlet</servlet-name>
    <servlet-class>com.sample.FatalErrorServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>FatalErrorServlet</servlet-name>
    <url-pattern>*.fatal</url-pattern>
  </servlet-mapping>

  <!-- The Welcome File List -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!-- Error Pages -->
  <error-page>
    <error-code>500</error-code>
    <location>/500.fatal</location>
  </error-page>

  <error-page>
    <error-code>400</error-code>
    <location>/400.fatal</location>
  </error-page>

  <error-page>
    <error-code>401</error-code>
    <location>/401.fatal</location>
  </error-page>

  <error-page>
    <error-code>403</error-code>
    <location>/403.fatal</location>
  </error-page>

  <error-page>
    <error-code>404</error-code>
    <location>/404.fatal</location>
  </error-page>

  <!--HOME PAGE-->
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>CommonPages</web-resource-name>
      <url-pattern>/index.jsp</url-pattern>
      <http-method>GET</http-method>
      <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
      <description>These are the roles who have access</description>
      <role-name>role1</role-name>
    </auth-constraint>
    <user-data-constraint>
      <description>This is how the user data must be
transmitted</description>
      <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
  </security-constraint>
  <!--HOME PAGE-->

  <security-role>
    <role-name>role1</role-name>
  </security-role>
</web-app>

-- 
View this message in context: http://old.nabble.com/ActionContext.getContext%28%29-is-returning-null-tp26712068p26712068.html
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: ActionContext.getContext() is returning null

Posted by Wes Wannemacher <we...@wantii.com>.
Have you thought about re-creating the logic in FatalErrorServlet in a
Struts 2 Action? That would be the optimal solution. I don't think you
are going to get an *Action*Context unless you are in an *Action*. If
it has worked in the past, it's probably an unintended side effect.

If you can't refactor to an action, then just refactor your servlet to
not use Struts objects.

-Wes

On Wed, Dec 9, 2009 at 10:28 AM, strutsdev43 <na...@gmail.com> wrote:
>
> Hi
>
> Can someone please help with the issue that I am seeing with Struts 2.1.8.1.
>
> I have a page index.jsp which is protected by role "role1". when the user
> tries to access index.jsp, if the user is not authorized, the user is
> forwarded to a FatalErrorServlet.
>
> I have configured in web.xml to forward it to a FatalErrorServlet, which
> takes care of displaying a login freemarker template.
>
> FatalErrorServlet is trying to access the ActionContext using
> ActionContext.getContext(), but it is returning null.
>
> I have StrutsPrepareFilter, Sitemesh PageFilter, StrutsExecuteFilter
> configured in my web.xml, but looks like when the request gets forwarded to
> the FatalErrorServlet, it doesn't go through these filters.
>
> I tried setting the <dispatcher> element for these filters to REQUEST,
> FORWARD, IINCLUDE but nothing works.
>
> I am using Struts 2.1.8.1, app server is weblogic 10.0mp1.
>
> my web.xml contents
> <?xml version="1.0" encoding="ISO-8859-1"?>
>
> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
>
>
>    <filter>
>        <filter-name>struts-prepare</filter-name>
>
> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
>    </filter>
>
>    <filter>
>        <filter-name>sitemesh</filter-name>
>
> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
>    </filter>
>
>    <filter>
>        <filter-name>struts-execute</filter-name>
>
> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
>    </filter>
>
>    <filter-mapping>
>        <filter-name>struts-prepare</filter-name>
>        <url-pattern>/*</url-pattern>
>        <dispatcher>REQUEST</dispatcher>
>        <dispatcher>FORWARD</dispatcher>
>        <dispatcher>INCLUDE</dispatcher>
>    </filter-mapping>
>    <filter-mapping>
>        <filter-name>sitemesh</filter-name>
>        <url-pattern>/*</url-pattern>
>        <dispatcher>REQUEST</dispatcher>
>        <dispatcher>FORWARD</dispatcher>
>        <dispatcher>INCLUDE</dispatcher>
>    </filter-mapping>
>    <filter-mapping>
>        <filter-name>struts-execute</filter-name>
>        <url-pattern>/*</url-pattern>
>        <dispatcher>REQUEST</dispatcher>
>        <dispatcher>FORWARD</dispatcher>
>        <dispatcher>INCLUDE</dispatcher>
>    </filter-mapping>
>
>  <servlet>
>    <servlet-name>FatalErrorServlet</servlet-name>
>    <servlet-class>com.sample.FatalErrorServlet</servlet-class>
>  </servlet>
>
>  <servlet-mapping>
>    <servlet-name>FatalErrorServlet</servlet-name>
>    <url-pattern>*.fatal</url-pattern>
>  </servlet-mapping>
>
>  <!-- The Welcome File List -->
>  <welcome-file-list>
>    <welcome-file>index.jsp</welcome-file>
>  </welcome-file-list>
>
>  <!-- Error Pages -->
>  <error-page>
>    <error-code>500</error-code>
>    <location>/500.fatal</location>
>  </error-page>
>
>  <error-page>
>    <error-code>400</error-code>
>    <location>/400.fatal</location>
>  </error-page>
>
>  <error-page>
>    <error-code>401</error-code>
>    <location>/401.fatal</location>
>  </error-page>
>
>  <error-page>
>    <error-code>403</error-code>
>    <location>/403.fatal</location>
>  </error-page>
>
>  <error-page>
>    <error-code>404</error-code>
>    <location>/404.fatal</location>
>  </error-page>
>
>  <!--HOME PAGE-->
>  <security-constraint>
>    <web-resource-collection>
>      <web-resource-name>CommonPages</web-resource-name>
>      <url-pattern>/index.jsp</url-pattern>
>      <http-method>GET</http-method>
>      <http-method>POST</http-method>
>    </web-resource-collection>
>    <auth-constraint>
>      <description>These are the roles who have access</description>
>      <role-name>role1</role-name>
>    </auth-constraint>
>    <user-data-constraint>
>      <description>This is how the user data must be
> transmitted</description>
>      <transport-guarantee>NONE</transport-guarantee>
>    </user-data-constraint>
>  </security-constraint>
>  <!--HOME PAGE-->
>
>  <security-role>
>    <role-name>role1</role-name>
>  </security-role>
> </web-app>
>
> --
> View this message in context: http://old.nabble.com/ActionContext.getContext%28%29-is-returning-null-tp26712068p26712068.html
> Sent from the Struts - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>



-- 
Wes Wannemacher

Head Engineer, WanTii, Inc.
Need Training? Struts, Spring, Maven, Tomcat...
Ask me for a quote!

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org