Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 337951 - NPE in LoggerMill
Summary: NPE in LoggerMill
Status: RESOLVED FIXED
Alias: None
Product: Riena
Classification: RT
Component: Core (show other bugs)
Version: 2.1.0   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: 3.0.0.M6   Edit
Assignee: Stefan Liebig CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-02-23 05:22 EST by Stefan Liebig CLA
Modified: 2011-05-03 10:30 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Liebig CLA 2011-02-23 05:22:07 EST
Starting a Riena based (server) app causes the following exception:

ERROR [STDERR.write:152] (Refresh Packages:) javax.servlet.ServletException:
org.eclipse.core.runtime.CoreException: Plug-in
org.eclipse.riena.communication.publisher.hessian was unable to load class
org.eclipse.riena.communication.publisher.hessian.RienaHessianDispatcherServlet.
at
org.eclipse.equinox.http.registry.internal.ServletManager$ServletWrapper.initializeDelegate(ServletManager.java:198)
at
org.eclipse.equinox.http.registry.internal.ServletManager$ServletWrapper.init(ServletManager.java:171)
at
org.eclipse.equinox.http.servlet.internal.ServletRegistration.init(ServletRegistration.java:49)
at
org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerServlet(ProxyServlet.java:177)
at
org.eclipse.equinox.http.servlet.internal.HttpServiceImpl.registerServlet(HttpServiceImpl.java:66)
at
org.eclipse.equinox.http.registry.internal.HttpRegistryManager.registerServlet(HttpRegistryManager.java:266)
at
org.eclipse.equinox.http.registry.internal.HttpRegistryManager.addServletContribution(HttpRegistryManager.java:140)
at
org.eclipse.equinox.http.registry.internal.ServletManager.added(ServletManager.java:136)
at
org.eclipse.equinox.http.registry.internal.ExtensionPointTracker.open(ExtensionPointTracker.java:75)
at
org.eclipse.equinox.http.registry.internal.ServletManager.start(ServletManager.java:62)
at
org.eclipse.equinox.http.registry.internal.HttpRegistryManager.start(HttpRegistryManager.java:106)
at
org.eclipse.equinox.http.registry.internal.HttpServiceTracker.addingService(HttpServiceTracker.java:58)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:980)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:262)
at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:185)
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:348)
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:283)
at
org.eclipse.equinox.http.registry.internal.HttpServiceTracker.open(HttpServiceTracker.java:42)
at
org.eclipse.equinox.http.registry.internal.Activator.addingService(Activator.java:59)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:980)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:262)
at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:185)
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:348)
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:283)
at
org.eclipse.equinox.http.registry.internal.Activator.start(Activator.java:37)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(AccessController.java:241)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
at
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:380)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
at
org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1130)
at
org.eclipse.osgi.framework.internal.core.PackageAdminImpl.resumeBundles(PackageAdminImpl.java:304)
at
org.eclipse.osgi.framework.internal.core.PackageAdminImpl.processDelta(PackageAdminImpl.java:543)
at
org.eclipse.osgi.framework.internal.core.PackageAdminImpl.doResolveBundles(PackageAdminImpl.java:241)
at
org.eclipse.osgi.framework.internal.core.PackageAdminImpl$1.run(PackageAdminImpl.java:173)
at java.lang.Thread.run(Thread.java:811)
ERROR [STDERR.write:152] (Refresh Packages:) Caused by: 
ERROR [STDERR.write:152] (Refresh Packages:)
org.eclipse.core.runtime.CoreException: Plug-in
org.eclipse.riena.communication.publisher.hessian was unable to load class
org.eclipse.riena.communication.publisher.hessian.RienaHessianDispatcherServlet.
at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:194)
at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:176)
at
org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:904)
at
org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
at
org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
at
org.eclipse.equinox.http.registry.internal.ServletManager$ServletWrapper.initializeDelegate(ServletManager.java:194)
... 38 more
ERROR [STDERR.write:152] (Refresh Packages:) Caused by: 
ERROR [STDERR.write:152] (Refresh Packages:)
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter$TerminatingClassNotFoundException:
An error occurred while automatically activating bundle
org.eclipse.riena.communication.publisher.hessian (59).
at
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:460)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:605)
at
org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:230)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
... 42 more
ERROR [STDERR.write:152] (Refresh Packages:) Caused by: 
ERROR [STDERR.write:152] (Refresh Packages:)
org.osgi.framework.BundleException: Exception in
org.eclipse.riena.internal.communication.publisher.hessian.Activator.start() of
bundle org.eclipse.riena.communication.publisher.hessian.
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:734)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
at
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:380)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
at
org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268)
at
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
... 54 more
ERROR [STDERR.write:152] (Refresh Packages:) Caused by: 
ERROR [STDERR.write:152] (Refresh Packages:)
org.eclipse.riena.core.injector.InjectionFailure: Invocation target exception
on invoking 'public void
org.eclipse.riena.internal.core.logging.LoggerMill.bind(org.eclipse.equinox.log.ExtendedLogReaderService)'
on 'org.eclipse.riena.internal.core.logging.LoggerMill'.
at
org.eclipse.riena.core.injector.service.ServiceInjector.invoke(ServiceInjector.java:465)
at
org.eclipse.riena.core.injector.service.ServiceInjector.invokeBindMethod(ServiceInjector.java:412)
at
org.eclipse.riena.core.injector.service.RankingInjector.doBind(RankingInjector.java:48)
at
org.eclipse.riena.core.injector.service.RankingInjector.doStart(RankingInjector.java:29)
at
org.eclipse.riena.core.injector.service.ServiceInjector.andStart(ServiceInjector.java:133)
at
org.eclipse.riena.core.wire.WirePuller.injectServiceInto(WirePuller.java:155)
at
org.eclipse.riena.core.wire.WirePuller.injectIntoAnnotatedMethods(WirePuller.java:142)
at org.eclipse.riena.core.wire.WirePuller.wire(WirePuller.java:135)
at org.eclipse.riena.core.wire.WirePuller.andStart(WirePuller.java:94)
at org.eclipse.riena.core.wire.WirePuller.andStart(WirePuller.java:76)
at
org.eclipse.riena.internal.core.logging.LoggerProvider.initLoggerMill(LoggerProvider.java:95)
at
org.eclipse.riena.internal.core.logging.LoggerProvider.getLogger(LoggerProvider.java:60)
at
org.eclipse.riena.internal.core.logging.LoggerProvider.getLogger(LoggerProvider.java:50)
at org.eclipse.riena.core.Log4r.getLogger(Log4r.java:78)
at org.eclipse.riena.core.RienaActivator.getLogger(RienaActivator.java:78)
at
org.eclipse.riena.internal.communication.publisher.hessian.Activator.start(Activator.java:48)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(AccessController.java:241)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
... 60 more
ERROR [STDERR.write:152] (Refresh Packages:) Caused by: 
ERROR [STDERR.write:152] (Refresh Packages:) java.lang.NullPointerException
at org.eclipse.riena.internal.core.logging.LoggerMill.bind(LoggerMill.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at
org.eclipse.riena.core.injector.service.ServiceInjector.invoke(ServiceInjector.java:448)
... more
Comment 1 Stefan Liebig CLA 2011-02-23 09:22:02 EST
The reason for this failure is a refactoring that replaced the ´explicit´ wiring with the more convinient wiring with annotations.
With the former method it is possible to define the order of injections where the other method relies on the order given by Class.getDeclaredMethods() and there are no guarantees.
Comment 2 Stefan Liebig CLA 2011-02-23 09:43:52 EST
It is now possible to add a order for the injections, e.g.
- @InjectService(useRanking = true, order = 1)
- @InjectExtension(order = 0)

This order defines the injection sequence (lowest order first, if equal sequence is undefined). The default order (if not specified) is 0.

Additionaly there is a new annotation:
- @OnWiringDone
A method annotated with this annotation will be called if all injectors for this class have been installed and started. This this does not guarantee that i.e. all required services have been injected - they may have not yet been started (registered).

The LoggerMill uses now this annotations to define a proper sequence of injections.