Hi, I have an action that I've been injecting with Guice. I just noticed
that there is an @Inject annotation defined in
com.opensymphony.xwork2.inject. I'm assuming that this allows you to use
struts 2 as the di provider. So I tried removing my
com.google.inject.*imports that bring in the @Inject annotation, to
see if struts would pick
this up. It didn't, and I get an error in my netbeans tomcat window. I was
unable to find any @Singleton type annotation so that I could apply the
correct scope to my class being injected, so I left the Guice one.

Am I correct in assuming that the @Inject annotation provided by struts2 is
to allow struts to do the di? If so, is there any documentation on this?
Also, while troubleshooting, I tried both specifiying Guice as the
objectFactory, and not specifying it. It didn't matter either way.

Thanks,
Will


This is the error:

1) Error at com.bugnthecode.blog.actions.BlogService.<init>(BlogService.java
:32):
Could not find a suitable constructor in
com.bugnthecode.blog.actions.BlogService. Classes must have either one (and
only one) constructor annotated with @Inject or a zero-argument constructor.

1 error[s]
       at com.google.inject.BinderImpl.createInjector(BinderImpl.java:277)
       at com.google.inject.Guice.createInjector(Guice.java:79)
       at com.google.inject.Guice.createInjector(Guice.java:53)
       at com.google.inject.Guice.createInjector(Guice.java:43)
       at com.google.inject.struts2.GuiceObjectFactory.buildBean(
GuiceObjectFactory.java:101)
       at com.opensymphony.xwork2.ObjectFactory.buildBean(
ObjectFactory.java:152)
       at com.opensymphony.xwork2.ObjectFactory.buildBean(
ObjectFactory.java:141)
       at com.opensymphony.xwork2.ObjectFactory.buildAction(
ObjectFactory.java:111)
       at com.opensymphony.xwork2.DefaultActionInvocation.createAction(
DefaultActionInvocation.java:270)
       at com.opensymphony.xwork2.DefaultActionInvocation.init(
DefaultActionInvocation.java:360)
       at com.opensymphony.xwork2.DefaultActionInvocation.access$000(
DefaultActionInvocation.java:38)
       at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(
DefaultActionInvocation.java:78)
       at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(
UtilTimerStack.java:455)
       at com.opensymphony.xwork2.DefaultActionInvocation.<init>(
DefaultActionInvocation.java:70)
       at com.opensymphony.xwork2.DefaultActionInvocation.<init>(
DefaultActionInvocation.java:66)
       at com.opensymphony.xwork2.DefaultActionProxy.prepare(
DefaultActionProxy.java:189)
       at
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(
StrutsActionProxyFactory.java:41)
       at org.apache.struts2.dispatcher.Dispatcher.serviceAction(
Dispatcher.java:497)
       at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(
FilterDispatcher.java:421)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
       at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(
MonitorFilter.java:368)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
       at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:213)
       at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:178)
       at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:126)
       at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:105)
       at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:107)
       at org.apache.catalina.connector.CoyoteAdapter.service(
CoyoteAdapter.java:148)
       at org.apache.coyote.http11.Http11Processor.process(
Http11Processor.java:869)
       at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
(Http11BaseProtocol.java:664)
       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
PoolTcpEndpoint.java:527)
       at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
       at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:684)
       at java.lang.Thread.run(Thread.java:619)

Reply via email to