[
https://issues.apache.org/jira/browse/DOSGI-164?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Amichai Rothman resolved DOSGI-164.
-----------------------------------
Resolution: Fixed
Fix Version/s: 1.5.0
Assignee: Amichai Rothman
> NullPointerException on export
> ------------------------------
>
> Key: DOSGI-164
> URL: https://issues.apache.org/jira/browse/DOSGI-164
> Project: CXF Distributed OSGi
> Issue Type: Bug
> Components: DSW
> Affects Versions: 1.4.0
> Environment: Oracle JDK 1.7.0_17, Karaf 2.3.1, DOSGi 1.4.0
> Reporter: Amichai Rothman
> Assignee: Amichai Rothman
> Fix For: 1.5.0
>
>
> I got the exception below in the Karaf console on two occasions, once when
> just starting up Karaf, and once when a bundle was re-deployed. It looks like
> it's caused by using the return value of ServiceReference.getBundle() without
> a null check (the method's docs explicitly states it must return null if the
> service is unregistered).
> Note that this looks like the same cause as DOSGI-120 but in a different
> place in the code - and it can probably happen in other usages of
> ServiceReference.getBundle() which are missing a null check as well. BTW, the
> fix for DOSGI-120 is not entirely safe either, since it calls getBundle once
> for the null check, and again for using it, and the service state (and return
> value) might change in between the two - it's a race condition with an
> unregistering service. A better approach might be to call getBundle once,
> storing the result in a local variable, and then performing the null check
> and subsequently accessing the (unchanging) local variable.
> Exception in thread "pool-16-thread-1" java.lang.NullPointerException
> at
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.exportService(RemoteServiceAdminCore.java:104)
> at
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$1.run(RemoteServiceAdminInstance.java:64)
> at
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$1.run(RemoteServiceAdminInstance.java:58)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.exportService(RemoteServiceAdminInstance.java:58)
> at
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.exportService(RemoteServiceAdminInstance.java:37)
> at
> org.apache.cxf.dosgi.topologymanager.exporter.TopologyManagerExport.doExportService(TopologyManagerExport.java:249)
> at
> org.apache.cxf.dosgi.topologymanager.exporter.TopologyManagerExport.access$300(TopologyManagerExport.java:50)
> at
> org.apache.cxf.dosgi.topologymanager.exporter.TopologyManagerExport$3.run(TopologyManagerExport.java:214)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:722)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira