Community
Participate
Working Groups
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
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.
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.