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.

Reply via email to