[ 
https://issues.apache.org/activemq/browse/SM-2011?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=63406#action_63406
 ] 

Kurt Westerfeld commented on SM-2011:
-------------------------------------

Another update.  I added a log message to each of the three services in 
question's constructor.  When this problem occurs, spring does not even create 
the three services--only 2 of them are created.

What could cause this? It no longer looks like a servicemix/nmr init timing 
issue, but one of spring's basic construction of services.  Specifically, the 
cxfse:endpoint is simply not generating a new class in 1 of these 3 services.

Quite baffling.

> NMR Registration Fails on Startup Intermittently
> ------------------------------------------------
>
>                 Key: SM-2011
>                 URL: https://issues.apache.org/activemq/browse/SM-2011
>             Project: ServiceMix
>          Issue Type: Bug
>         Environment: Fuse 4.3
>            Reporter: Kurt Westerfeld
>            Priority: Critical
>
> We have a number of services which start when servicemix starts, based on 
> servicemix-cxf-se, which publish endpoints to the NMR implicitly by using 
> org.apache.servicemix.common.osgi.EndpointExporter.  We are seeing the 
> situation where after startup, some of our services are missing from the 
> endpoint registry.  We cannot see them using the admin command "nmr:list", 
> and in tracking this down, have noticed that the 
> org.apache.servicemix.nmr.core.EndpointRegistryImpl does not contain a 
> mapping for the service.  This is clearly a bug, because if we do an 
> osgi:restart on the bundle containing our service the NMR will correctly 
> register the endpoints.
> This is obviously causing us concern.  We have worked around other 
> initialization problems with our servicemix-cxf-se services related to 
> generation of proxies by injecting the component registry 
> (org.apache.servicemix.jbi.runtime.ComponentRegistry) to the proxy.  We are 
> wondering if there is a similar workaround we must perform in order to ensure 
> our components do not initialize before the NMR service registry tracker is 
> ready to receive them.
> Noticing a normal initialization sees this stacktrace fragment:
>         
> org.apache.servicemix.nmr.core.EndpointRegistryImpl.register(org.apache.servicemix.nmr.api.Endpoint,
>  java.util.Map<java.lang.String,?>) line: 115     
>         
> org.apache.servicemix.nmr.core.EndpointRegistryImpl.register(java.lang.Object,
>  java.util.Map) line: 49        
>         
> org.apache.servicemix.nmr.osgi.OsgiServiceRegistryTracker<T>.addingService(org.osgi.framework.ServiceReference)
>  line: 78      
> So, it seems that the 
> org.apache.servicemix.nmr.osgi.OsgiServiceRegistryTracker listener must be 
> getting initialized *after* our own bundle in this case.  Since this class 
> registers a service tracker, it is my bet that it is not tracking services 
> before our service's endpoint exporter has started running.  In another odd 
> twist, the main culprit in our use case exports 3 services, and only one of 
> them seems to be missing.
> The complexity of getting our services to start properly and reliably has 
> been the most significant issue facing us in our port from servicemix 3 to 4. 
>  We'd appreciate some help and/or fixes to get us moving in the right 
> direction.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to