Hm. They're supposed to operate exactly the same. On Thu, Jun 14, 2012 at 11:01 AM, Steve Eynon < steve.ey...@alienfactory.co.uk> wrote:
> My mistake, the @Inject in the My class needs to be a > > org.apache.tapestry5.ioc.annotations.Inject; > or > org.apache.tapestry5.ioc.annotations.InjectResource; > > Probably as (already stated - I think), the T5 @Inject uses a > MasterObjectProvider whereas the javax @Inject just looks up Services > - which the Logger isn't... ??? > > Steve. > > On 15 June 2012 01:14, Steve Eynon <steve.ey...@alienfactory.co.uk> wrote: > > Just tried it on T5.3.3 and it worked fine with both @Inject > annotations... > > > > Though I wouldn't advise injecting services into your module - that > > just seems... well, weird! > > > > Steve. > > > > > > On 15 June 2012 01:00, Muhammad Gelbana <m.gelb...@gmail.com> wrote: > >> Well thanks, that was my mistake ! > >> Although now I tried calling the logger in a method called in the > >> contribute registry startup static method and still tapestry didn't > resolve > >> it: > >> > >> public class *AppModule* { > >> > >> @Inject > >> private IMy my; > >> public static void bind(ServiceBinder binder) { > >> binder.bind(IMy.class, My.class); > >> } > >> > >> public void contributeRegistryStartup(OrderedConfiguration<Runnable> > >> configuration, final Logger log) { > >> my.a(); > >> } > >> } > >> > >> package com.t5logging.services; > >> import javax.inject.Inject; > >> import org.slf4j.Logger; > >> > >> public class My implements IMy { > >> > >> @Inject > >> private Logger log; > >> > >> public My() { > >> } > >> > >> public void a() { > >> System.out.println(log); > >> log.info("Logging again"); > >> } > >> } > >> > >> This still throws a service not implemented exception: > >> Running Jetty 6.1.26 > >> . > >> //Saving some time > >> . > >> [DEBUG] AppModule.IMy Creating proxy for service IMy > >> [DEBUG] AppModule.IMy Loading class com.t5logging.services.My. > >> [DEBUG] AppModule.IMy Marking class com.t5logging.services.My to be > >> (re-)loaded > >> [DEBUG] AppModule.IMy BEGIN Analyzing com.t5logging.services.My > >> [DEBUG] AppModule.IMy END Analyzing com.t5logging.services.My > >> [ERROR] ioc.Registry No service implements the interface > org.slf4j.Logger. > >> [ERROR] ioc.Registry Operations trace: > >> [ERROR] ioc.Registry [ 1] Realizing service RegistryStartup > >> [ERROR] ioc.Registry [ 2] Instantiating service RegistryStartup > >> implementation via > >> org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List) > >> (at RegistryStartup.java:36) via > >> org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) > (at > >> TapestryIOCModule.java:49) > >> [ERROR] ioc.Registry [ 3] Creating plan to instantiate > >> org.apache.tapestry5.ioc.internal.services.RegistryStartup via public > >> > org.apache.tapestry5.ioc.internal.services.RegistryStartup(org.slf4j.Logger,java.util.List) > >> [ERROR] ioc.Registry [ 4] Determining injection value for parameter #2 > >> (java.util.List) > >> [ERROR] ioc.Registry [ 5] Collecting ordered configuration for service > >> RegistryStartup > >> [ERROR] ioc.Registry [ 6] Invoking > >> > com.t5logging.services.AppModule.contributeRegistryStartup(OrderedConfiguration, > >> Logger) (at AppModule.java:39) > >> [ERROR] ioc.Registry [ 7] Reloading class com.t5logging.services.My. > >> [ERROR] ioc.Registry [ 8] Creating plan to instantiate > >> com.t5logging.services.My via public com.t5logging.services.My() > >> [ERROR] ioc.Registry [ 9] Calculating possible injection value for field > >> com.t5logging.services.My.log (org.slf4j.Logger) > >> [ERROR] ioc.Registry [10] Resolving object of type org.slf4j.Logger > using > >> MasterObjectProvider > >> [ERROR] TapestryIOCModule.RegistryStartup Construction of service > >> RegistryStartup failed: Error invoking service contribution method > >> > com.t5logging.services.AppModule.contributeRegistryStartup(OrderedConfiguration, > >> Logger): No service implements the interface org.slf4j.Logger. > >> java.lang.RuntimeException: Error invoking service contribution method > >> > com.t5logging.services.AppModule.contributeRegistryStartup(OrderedConfiguration, > >> Logger): No service implements the interface org.slf4j.Logger. > >> at > >> > org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:130) > >> at > >> > org.apache.tapestry5.ioc.internal.ContributionDefImpl.contribute(ContributionDefImpl.java:80) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl$9.run(RegistryImpl.java:630) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47) > >> at > >> > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.addToOrderedConfiguration(RegistryImpl.java:626) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.getOrderedConfiguration(RegistryImpl.java:480) > >> at > >> > org.apache.tapestry5.ioc.internal.ServiceResourcesImpl$2.invoke(ServiceResourcesImpl.java:110) > >> at > >> > org.apache.tapestry5.ioc.internal.ServiceResourcesImpl$2.invoke(ServiceResourcesImpl.java:107) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > >> at > >> > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > >> at > >> > org.apache.tapestry5.ioc.internal.ServiceResourcesImpl.getOrderedConfiguration(ServiceResourcesImpl.java:105) > >> at > >> > org.apache.tapestry5.ioc.internal.AbstractServiceCreator.getOrderedConfiguration(AbstractServiceCreator.java:123) > >> at > >> > org.apache.tapestry5.ioc.internal.AbstractServiceCreator.access$200(AbstractServiceCreator.java:35) > >> at > >> > org.apache.tapestry5.ioc.internal.AbstractServiceCreator$1.findResource(AbstractServiceCreator.java:103) > >> at > >> > org.apache.tapestry5.ioc.internal.util.DelegatingInjectionResources.findResource(DelegatingInjectionResources.java:38) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateInjection(InternalUtils.java:231) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils.access$000(InternalUtils.java:50) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:289) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:286) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > >> at > >> > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:293) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils$23.invoke(InternalUtils.java:1488) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils$23.invoke(InternalUtils.java:1483) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > >> at > >> > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils.createConstructorConstructionPlan(InternalUtils.java:1480) > >> at > >> > org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.getPlan(ConstructorServiceCreator.java:52) > >> at > >> > org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > >> at > >> > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) > >> at > >> > org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29) > >> at > >> > org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46) > >> at > >> > org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63) > >> at > >> > org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54) > >> at > >> > org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > >> at > >> > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) > >> at > >> > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66) > >> at > >> > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54) > >> at $Runnable_452bb13e0afc.delegate(Unknown Source) > >> at $Runnable_452bb13e0afc.run(Unknown Source) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:322) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80) > >> at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:118) > >> 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:713) > >> at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) > >> at > >> > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282) > >> at > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518) > >> at > org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499) > >> 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 runjettyrun.Bootstrap.main(Bootstrap.java:82) > >> Caused by: org.apache.tapestry5.ioc.internal.OperationException: No > service > >> implements the interface org.slf4j.Logger. > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88) > >> at > >> > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > >> at > >> > org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:45) > >> at $MasterObjectProvider_452bb13e0adc.provide(Unknown Source) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:868) > >> at > >> > org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getObject(ObjectLocatorImpl.java:57) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils$25.run(InternalUtils.java:1567) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47) > >> at > >> > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1116) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils.extendPlanForInjectedFields(InternalUtils.java:1534) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils.access$200(InternalUtils.java:50) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils$23.invoke(InternalUtils.java:1496) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils$23.invoke(InternalUtils.java:1483) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > >> at > >> > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > >> at > >> > org.apache.tapestry5.ioc.internal.util.InternalUtils.createConstructorConstructionPlan(InternalUtils.java:1480) > >> at > >> > org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.getPlan(ConstructorServiceCreator.java:52) > >> at > >> > org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61) > >> at > >> > org.apache.tapestry5.ioc.internal.ReloadableServiceImplementationObjectCreator.createInstance(ReloadableServiceImplementationObjectCreator.java:52) > >> at > >> > org.apache.tapestry5.ioc.internal.AbstractReloadableObjectCreator$1.invoke(AbstractReloadableObjectCreator.java:127) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > >> at > >> > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > >> at > >> > org.apache.tapestry5.ioc.internal.AbstractReloadableObjectCreator.createInstance(AbstractReloadableObjectCreator.java:121) > >> at > >> > org.apache.tapestry5.ioc.internal.AbstractReloadableObjectCreator.createObject(AbstractReloadableObjectCreator.java:113) > >> at $IMy_452bb13e0aff.delegate(Unknown Source) > >> at $IMy_452bb13e0aff.a(Unknown Source) > >> at $IMy_452bb13e0afd.a(Unknown Source) > >> at > >> > com.t5logging.services.AppModule.contributeRegistryStartup(AppModule.java:39) > >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > >> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > >> at java.lang.reflect.Method.invoke(Unknown Source) > >> at > >> > org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:120) > >> ... 69 more > >> Caused by: java.lang.RuntimeException: No service implements the > interface > >> org.slf4j.Logger. > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.getServiceByTypeAlone(RegistryImpl.java:661) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.getServiceByTypeAndMarkers(RegistryImpl.java:681) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:640) > >> at > >> > org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:47) > >> at > >> > org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl$1.invoke(MasterObjectProviderImpl.java:60) > >> at > >> > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > >> ... 108 more > >> 2012-06-14 18:55:47.604:WARN::failed app: java.lang.RuntimeException: > >> Exception constructing service 'RegistryStartup': Error invoking service > >> contribution method > >> > com.t5logging.services.AppModule.contributeRegistryStartup(OrderedConfiguration, > >> Logger): No service implements the interface org.slf4j.Logger. > >> 2012-06-14 18:55:47.604:WARN::Failed startup of context > >> org.mortbay.jetty.webapp.WebAppContext@135f0a > >> {/,E:\Workspace\Eclipse\TapestryLogging\src\main\webapp} > >> java.lang.RuntimeException: Exception constructing service > >> 'RegistryStartup': Error invoking service contribution method > >> > com.t5logging.services.AppModule.contributeRegistryStartup(OrderedConfiguration, > >> Logger): No service implements the interface org.slf4j.Logger. > >> at > >> > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:75) > >> at > >> > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54) > >> at $Runnable_452bb13e0afc.delegate(Unknown Source) > >> at $Runnable_452bb13e0afc.run(Unknown Source) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:322) > >> at > >> > org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80) > >> at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:118) > >> 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:713) > >> at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) > >> at > >> > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282) > >> at > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518) > >> at > org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499) > >> 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 runjettyrun.Bootstrap.main(Bootstrap.java:82) > >> 2012-06-14 18:55:47.637:INFO::Started SelectChannelConnector@0.0.0.0:80 > >> > >> > >> On Thu, Jun 14, 2012 at 6:26 PM, Steve Eynon < > steve.ey...@alienfactory.co.uk > >>> wrote: > >> > >>> Yeah, this isn't a T5 thing - it's Java! > >>> > >>> @Inject > >>> private Logger log; > >>> > >>> public My() { > >>> log.info("Logger injected in service using > @javax.inject.Inject"); > >>> } > >>> > >>> T5 can't do field injection until it's constructed the class. But when > >>> T5 constructs the class you access the field --> NPE! > >>> > >>> Steve. > >>> > >>> > >>> On 15 June 2012 00:11, Taha Siddiqi <tawus.tapes...@gmail.com> wrote: > >>> > I don't think you can use "@Inject"ed value in the constructor. > >>> > > >>> > The constructor is called first and then injection is done. As you > are > >>> accessing the service in constructor, at this point the field > injection has > >>> not been done. And as Logger has not been build by the registry, you > get > >>> Service not implemented error.. > >>> > > >>> > regards > >>> > Taha > >>> > > >>> > On Jun 14, 2012, at 9:25 PM, Muhammad Gelbana wrote: > >>> > > >>> >> <TapestryLogging.zip> > >>> > > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > >>> For additional commands, e-mail: users-h...@tapestry.apache.org > >>> > >>> > >> > >> > >> -- > >> *Regards,* > >> *Muhammad Gelbana > >> Java Developer* > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com