I have an intermittent problem possibly related to session creation or
Interceptor configuration. In a few words, when a browser is first opened
and a valid action is requested, an exception is returned. After I request
the base application name with no action, a successful response is returned,
and then I can request any action.
In detail:
- When following a hyperlink to a page with or without parameters, error
- when closing / opening browser and going directly to any valid action, get
error
- when closing / opening browser and going directly to anything that would
invoke the default action, get error
- after trying these things, there is no error when requesting the
application by base name alone, with no action in the URL
- once this has been done, the above things that didn't work, now work
- I have a customer interceptor before 'prepare'. when request.getSession()
is called, a session object is returned (as expected)
- this interceptor calls session.setAttribute() to set various parameters
- my action class implements SessionAware (and Preparable) to obtain the
sessionMap object
- following the above actions that result in errors, sessionMap is empty
when called in the Preparable method
- when the application is working, sessionMap is not empty as expected
My interceptor configuration in struts.xml looks like:
<interceptors>
<interceptor name="mySpecificLocale"
class="com.mndigi.notes.util.LocaleInterceptor" />
<interceptor-stack name="defaultLocaleStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="mySpecificLocale" />
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="profiling"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload">
<!-- struts.properties value is checked
first. these are set the same
-->
20971520
</interceptor-ref>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="params">
dojo\..*
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
input,back,cancel,browse
</interceptor-ref>
<interceptor-ref name="workflow">
input,back,cancel,browse
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultLocaleStack"/>
Also, here is a debug stack trace when there is a problem:
10:24:46,453 DEBUG ConfigurationManager:156 - Checking
ConfigurationProviders for reload.
10:24:46,453 DEBUG InstantiatingNullHandler:72 - Entering nullPropertyValue
[EMAIL PROTECTED],
property=struts]
10:24:46,453 DEBUG ConfigurationManager:156 - Checking
ConfigurationProviders for reload.
10:24:46,453 DEBUG DefaultActionProxy:65 - Creating an DefaultActionProxy
for namespace / and action name home
10:24:46,468 DEBUG I18nInterceptor:97 - intercept '//home' {
10:24:46,468 DEBUG I18nInterceptor:110 - requested_locale=null
10:24:46,468 DEBUG I18nInterceptor:140 - before Locale=en_US
10:24:46,468 INFO LocaleInterceptor:38 - url:
http://localhost:8080/TechNotes
10:24:46,468 DEBUG LocaleInterceptor:57 - locale language (based on url) =
technotes
10:24:46,468 DEBUG LocaleInterceptor:59 - application name (based on
corresponding properties file): TechNotes
10:24:46,468 DEBUG PrefixMethodInvocationUtil:141 - cannot find method
[prepareHome] in action [EMAIL PROTECTED]
10:24:46,468 DEBUG PrefixMethodInvocationUtil:141 - cannot find method
[prepareDoHome] in action [EMAIL PROTECTED]
10:24:46,468 ERROR [default]:253 - Servlet.service() for servlet default
threw exception
java.lang.NullPointerException
at com.wamnet.notes.webactions.NoteAction.prepare(NoteAction.java:163)
at
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:118)
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at
com.mndigi.notes.util.LocaleInterceptor.intercept(LocaleInterceptor.java:65)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
at
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
at
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
10:24:46,484 DEBUG [/TechNotes]:185 - servletPath=/error.jsp, pathInfo=null,
queryString=null, name=null
10:24:46,484 DEBUG [/TechNotes]:375 - Path Based Forward
10:24:46,484 DEBUG JspServlet:248 - JspEngine --> /error.jsp
10:24:46,484 DEBUG JspServlet:249 - ServletPath: /error.jsp
10:24:46,484 DEBUG JspServlet:250 - PathInfo: null
10:24:46,484 DEBUG JspServlet:251 - RealPath: C:\Documents and
Settings\jeremy\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\notesproject\error.jsp
10:24:46,484 DEBUG JspServlet:252 - RequestURI: /TechNotes/error.jsp
10:24:46,484 DEBUG JspServlet:253 - QueryString: null
10:24:46,484 DEBUG JspServlet:254 - Request Params:
10:24:46,484 DEBUG [/TechNotes]:412 - Disabling the response for futher
output
10:24:46,859 DEBUG ConfigurationManager:156 - Checking
ConfigurationProviders for reload.
And here is the log when there is no problem:
10:24:01,484 DEBUG ConfigurationManager:156 - Checking
ConfigurationProviders for reload.
10:24:01,484 DEBUG InstantiatingNullHandler:72 - Entering nullPropertyValue
[EMAIL PROTECTED], property=org]
10:24:01,484 DEBUG JspServlet:248 - JspEngine --> /index.jsp
10:24:01,500 DEBUG JspServlet:249 - ServletPath: /index.jsp
10:24:01,500 DEBUG JspServlet:250 - PathInfo: null
10:24:01,500 DEBUG JspServlet:251 - RealPath: C:\Documents and
Settings\jeremy\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\notesproject\index.jsp
10:24:01,500 DEBUG JspServlet:252 - RequestURI: /TechNotes/
10:24:01,500 DEBUG JspServlet:253 - QueryString: null
10:24:01,500 DEBUG JspServlet:254 - Request Params:
10:24:01,515 DEBUG ConfigurationManager:156 - Checking
ConfigurationProviders for reload.
10:24:01,515 DEBUG InstantiatingNullHandler:72 - Entering nullPropertyValue
[EMAIL PROTECTED],
property=struts]
10:24:01,515 DEBUG ConfigurationManager:156 - Checking
ConfigurationProviders for reload.
10:24:01,515 DEBUG DefaultActionProxy:65 - Creating an DefaultActionProxy
for namespace / and action name home
10:24:01,515 DEBUG I18nInterceptor:97 - intercept '//home' {
10:24:01,515 DEBUG I18nInterceptor:110 - requested_locale=null
10:24:01,515 DEBUG I18nInterceptor:140 - before Locale=en_US
10:24:01,515 INFO LocaleInterceptor:38 - url:
http://localhost:8080/TechNotes
10:24:01,515 DEBUG LocaleInterceptor:57 - locale language (based on url) =
technotes
10:24:01,531 DEBUG LocaleInterceptor:59 - application name (based on
corresponding properties file): TechNotes
10:24:01,531 DEBUG PrefixMethodInvocationUtil:141 - cannot find method
[prepareHome] in action [EMAIL PROTECTED]
10:24:01,531 DEBUG PrefixMethodInvocationUtil:141 - cannot find method
[prepareDoHome] in action [EMAIL PROTECTED]
Hibernate:
/* criteria query */ select
this_.category_id as category1_0_0_,
this_.name as name0_0_,
this_.serial_version_u_i_d as serial3_0_0_,
this_.application_name as applicat4_0_0_
from
tb_category this_
where
this_.application_name=?
order by
this_.name asc
10:24:02,015 DEBUG InstantiatingNullHandler:72 - Entering nullPropertyValue
[EMAIL PROTECTED],
[EMAIL PROTECTED], property=struts]
10:24:02,015 DEBUG FileUploadInterceptor:204 - Bypassing // home
10:24:02,015 DEBUG StaticParametersInterceptor:83 - Setting static
parameters {}
10:24:02,015 DEBUG ParametersInterceptor:148 - Setting params
10:24:02,031 DEBUG AnnotationValidationInterceptor:134 - Validating //home
with method home.
10:24:02,031 INFO ActionValidatorManagerFactory:29 - Detected
AnnotationActionValidatorManager, initializing it...
10:24:02,078 DEBUG DefaultWorkflowInterceptor:183 - Invoking validate() on
action [EMAIL PROTECTED]
10:24:02,078 DEBUG PrefixMethodInvocationUtil:141 - cannot find method
[validateHome] in action [EMAIL PROTECTED]
10:24:02,078 DEBUG PrefixMethodInvocationUtil:141 - cannot find method
[validateDoHome] in action [EMAIL PROTECTED]
10:24:02,078 DEBUG DefaultActionInvocation:383 - Executing action method =
home
10:24:02,578 WARN QueryTranslatorImpl:328 - firstResult/maxResults
specified with collection fetch; applying in memory!
Hibernate:
...
Thanks,
Jeremy
--
View this message in context:
http://www.nabble.com/session-or-interceptor-initialization---configuration-problem-tp15188815p15188815.html
Sent from the Struts - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]