Ok I think I solved it.. I actually bound something different twice... However I have a another problem, but ill create a new thread for that
2011/10/20 nino martinez wael <[email protected]>: > Hi > > I have the following setup: > > Injector-ModuleA-ChildInjectorA-ModuleB-ChildInjectorB-ModuleC-FinalChildInjector > > \-----------ModuleD--------/ > > ModuleA is the core project where all base stuff are setup like JPA etc.. > > ModuleB needs to use JPA(get it injected), so therefore it needs to be > installed in childInjectorA > > ModuleC & ModuleD uses stuff in ModuleB so therefore needs to be in > childInjectorB so that it can get stuff from childinjectorA injected. > > Problem are the one of the components in ModuleD gets this "It was > already configured on one or more child injectors or private modules" > to one of the references from ChildInjectorB which are strange since I > only define the class once. Intially I was not using private modules, > I've also tried using them and exposing the problematic interfaces but > it still fails. > > Are there another way of getting things injected into modules? If I > somehow could use just one Injector it would probably work, but in > order todo that I need guice to manage the module instead of what I am > doing now: > > Pseudo code: > Injector injector= Guice > .createInjector(new ModuleA()); > > ModuleB moduleB= new ModuleB(); > injector.injectMembers(moduleB); > > injector= injector.createChildInjector(moduleB); > > ModuleC moduleC= new ModuleC(); > ModuleD moduleD= new ModuleD(); > injector.injectMembers(moduleC); > injector.injectMembers(moduleD); > injector= injector.createChildInjector(moduleC, > moduleD); > > > > > Heres the full stack (real code), WallboardDataDriverModule=ModuleB and : > > 2011-10-20 11:24:35,723 WARN [org.mortbay.log.Slf4jLog] - failed > wicket.WicketWarp: com.google.inject.CreationException: Guice creation > errors: > > 1) Unable to create binding for > com.netdesign.wallboard.core.interfaces.WallBoardMainDataProvider. It > was already configured on one or more child injectors or private > modules > bound at > com.netdesign.wallboard.core.WallboardDataDriverModule.configure(WallboardDataDriverModule.java:35) > bound at > com.netdesign.wallboard.core.WallboardDataDriverModule.configure(WallboardDataDriverModule.java:33) > If it was in a PrivateModule, did you forget to expose the binding? > while locating > com.netdesign.wallboard.core.interfaces.WallBoardMainDataProvider > for parameter 0 at > com.netdesign.dao.cisco.general.uccx.CiscoUCCXGeneralWallBoardViewerProvider.setWallBoardMainDataProvider(CiscoUCCXGeneralWallBoardViewerProvider.java:261) > at > com.netdesign.dao.cisco.general.uccx.CiscoUCCXGeneralWallBoardViewerProvider.setWallBoardMainDataProvider(CiscoUCCXGeneralWallBoardViewerProvider.java:261) > while locating > com.netdesign.dao.cisco.v8.uccx.CiscoUCCX8WallBoardViewerProvider > > 1 error > 2011-10-20 11:24:35,723 ERROR [org.mortbay.log.Slf4jLog] - Failed > startup of context > org.mortbay.jetty.webapp.WebAppContext@67d5fe{,src/main/webapp} > com.google.inject.CreationException: Guice creation errors: > > 1) Unable to create binding for > com.netdesign.wallboard.core.interfaces.WallBoardMainDataProvider. It > was already configured on one or more child injectors or private > modules > bound at > com.netdesign.wallboard.core.WallboardDataDriverModule.configure(WallboardDataDriverModule.java:35) > bound at > com.netdesign.wallboard.core.WallboardDataDriverModule.configure(WallboardDataDriverModule.java:33) > If it was in a PrivateModule, did you forget to expose the binding? > while locating > com.netdesign.wallboard.core.interfaces.WallBoardMainDataProvider > for parameter 0 at > com.netdesign.dao.cisco.general.uccx.CiscoUCCXGeneralWallBoardViewerProvider.setWallBoardMainDataProvider(CiscoUCCXGeneralWallBoardViewerProvider.java:261) > at > com.netdesign.dao.cisco.general.uccx.CiscoUCCXGeneralWallBoardViewerProvider.setWallBoardMainDataProvider(CiscoUCCXGeneralWallBoardViewerProvider.java:261) > while locating > com.netdesign.dao.cisco.v8.uccx.CiscoUCCX8WallBoardViewerProvider > > 1 error > at > com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435) > at > com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:154) > at > com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106) > at > com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:217) > at > com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:224) > at > com.netdesign.wallboard.application.WicketApplication.getDevelopmentInjector(WicketApplication.java:115) > at > com.netdesign.wallboard.application.WicketApplication.getGuiceInjector(WicketApplication.java:91) > at > com.netdesign.wallboard.application.WicketApplication.init(WicketApplication.java:71) > at org.apache.wicket.Application.initApplication(Application.java:805) > at > org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:346) > at > org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:286) > at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:662) > at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) > at > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1272) > at > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) > at > org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:489) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) > at org.mortbay.jetty.Server.doStart(Server.java:224) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at com.netdesign.wallboard.Start.main(Start.java:47) > 2011-10-20 11:24:35,739 INFO [org.mortbay.log.Slf4jLog] - Started > [email protected]:8080 > -- 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.
