我们使用KARAF4.1.4作为容器,通过将其打包为.kar文件来部署OSGi捆绑包。随机地,KAR文件未部署捆绑软件。重新启动或第二次部署后,我部署了.kar。没有错误日志可以识别根本原因。我在data / cache / .log中发现了唯一与.kar部署问题无关的错误日志。
注意:问题随机出现,很难有意再现该问题。重新启动或重新引导后部署相同的KAR文件(不做任何更改)。
错误:
!SESSION 2019-06-19 15:14:19.770 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.8.0_202
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
!ENTRY org.apache.karaf.features.core 4 0 2019-06-19 15:14:19.774
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.ServiceException: Exception in org.eclipse.equinox.internal.region.hook.RegionServiceFindHook.find()
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHookPrivileged(ServiceRegistry.java:1306)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHooksPrivileged(ServiceRegistry.java:1278)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyFindHooksPrivileged(ServiceRegistry.java:1176)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyFindHooks(ServiceRegistry.java:1161)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getServiceReferences(ServiceRegistry.java:337)
at org.eclipse.osgi.internal.framework.BundleContextImpl.getAllServiceReferences(BundleContextImpl.java:540)
at org.apache.aries.jmx.framework.ServiceState.getServiceIds(ServiceState.java:205)
at org.apache.aries.jmx.framework.ServiceState.getAttributeChangeNotification(ServiceState.java:304)
at org.apache.aries.jmx.framework.ServiceState$1.serviceChanged(ServiceState.java:268)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:222)
at org.apache.aries.spifly.ProviderBundleTrackerCustomizer.removedBundle(ProviderBundleTrackerCustomizer.java:334)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerRemoved(BundleTracker.java:495)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerRemoved(BundleTracker.java:415)
at org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:341)
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112)
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168)
at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
at org.eclipse.osgi.container.Module.doStop(Module.java:634)
at org.eclipse.osgi.container.Module.stop(Module.java:498)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.decStartLevel(ModuleContainer.java:1675)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1594)
at org.eclipse.osgi.container.SystemModule.stopWorker(SystemModule.java:270)
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule.stopWorker(EquinoxBundle.java:147)
at org.eclipse.osgi.container.Module.doStop(Module.java:636)
at org.eclipse.osgi.container.Module.stop(Module.java:498)
at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:202)
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:165)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at org.eclipse.equinox.internal.region.BundleIdBasedRegion.contains(BundleIdBasedRegion.java:192)
at org.eclipse.equinox.internal.region.hook.RegionServiceFindHook$Visitor.contains(RegionServiceFindHook.java:77)
at org.eclipse.equinox.internal.region.hook.RegionServiceFindHook$Visitor.contains(RegionServiceFindHook.java:1)
at org.eclipse.equinox.internal.region.hook.RegionDigraphVisitorBase.visit(RegionDigraphVisitorBase.java:101)
at org.eclipse.equinox.internal.region.SubgraphTraverser.visitRemainingSubgraph(SubgraphTraverser.java:37)
at org.eclipse.equinox.internal.region.SubgraphTraverser.visitSubgraph(SubgraphTraverser.java:32)
at org.eclipse.equinox.internal.region.StandardRegionDigraph.visitSubgraph(StandardRegionDigraph.java:374)
at org.eclipse.equinox.internal.region.BundleIdBasedRegion.visitSubgraph(BundleIdBasedRegion.java:264)
at org.eclipse.equinox.internal.region.hook.RegionServiceFindHook.find(RegionServiceFindHook.java:60)
at org.eclipse.equinox.internal.region.hook.RegionServiceFindHook.find(RegionServiceFindHook.java:50)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$4.call(ServiceRegistry.java:1179)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHookPrivileged(ServiceRegistry.java:1298)
... 39 more