I am attempting to use the Struts 2 integration for Guice 3 provided
via the struts 2 plugin. When I attempt to hit ay page in my
application I get this stack trace:
java.lang.NullPointerException
at com.google.inject.struts2.Struts2Factory
$ProvidedInterceptor.intercept(Struts2Factory.java:215)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
248)
at
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:
52)
at
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:
485)
at
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:
77)
at
org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:
88)
at
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:
163)
at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:
58)
at
com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:
129)
at
com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:
77)
at
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:
163)
at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:
58)
at
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:
82)
at
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:
163)
at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:
58)
at
com.fiveamsolutions.tissuelocator.web.filter.TissueLocatorUserFilter.doFilter(TissueLocatorUserFilter.java:
80)
at
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:
163)
at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:
58)
at
com.fiveamsolutions.nci.commons.web.filter.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:
121)
at
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:
163)
at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:
58)
at
com.fiveamsolutions.nci.commons.web.filter.UsernameFilter.doFilter(UsernameFilter.java:
117)
at
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:
163)
at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:
58)
at
com.fiveamsolutions.nci.commons.web.filter.SessionFixationProtectionFilter.doFilter(SessionFixationProtectionFilter.java:
145)
at
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:
163)
at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:
58)
at
com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:
118)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:
113)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:
96)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
235)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
191)
at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:
190)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:
433)
at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:
92)
at
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:
126)
at
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:
70)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
at
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:
158)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
330)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
829)
at org.apache.coyote.http11.Http11Protocol
$Http11ConnectionHandler.process(Http11Protocol.java:598)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447)
at java.lang.Thread.run(Thread.java:680)
This issue appears to have been reported in
http://code.google.com/p/google-guice/issues/detail?id=619 and
http://code.google.com/p/google-guice/issues/detail?id=278 and
http://code.google.com/p/google-guice/issues/detail?id=611.
Neither struts nor guice seem to have an official patch that fixes
this issue. I was wondering if anyone in the community has found a
reliable fix that will allow the struts 2 plugin to work with guice
3. If not, I will revert to a simple replacement for the struts 2
object factory I used with guice 2 to get around the guice 2 / struts
2 integration issues. At that time I just extended the struts 2 /
xwork provided object factory and overrode the buildBean method to
pull the objectfactory from a static location. This works fine, but I
would rather use an official plugin if it exists.
Thanks,
Scott
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en.