Add service ranking to re-registered XA data source
---------------------------------------------------

                 Key: ARIES-601
                 URL: https://issues.apache.org/jira/browse/ARIES-601
             Project: Aries
          Issue Type: Improvement
            Reporter: Holly Cummins
            Priority: Minor


 In the 
blog sample we use the service property osgi.jndi.service.name to uniquely 
identify the datasource services. However, in the persistence.xml, we only use 
the jndi service name as a filter property, like: 

 
<jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/blogdb)</jta-data-source>

instead of writing:

    <jta-data-source>osgi:service/jdbc/blogdb</jta-data-source>

It seems a shame to bother to specify the jndi.service.name property but then 
not take advantage of the shorter JNDI name, but there's a good 
reason we don't - it doesn't work. 

The datasource blueprint.xml declares two services, for DataSource and 
XADataSource, and then Aries helpfully auto-creates a third service, which 
makes an enriched wrapper of the EmbeddedXADataSource bean for lookups of the 
DataSource interface.

Unfortunately, once this has been done we have two services with the same JNDI 
service name. Anything which uses the JNDI name 
osgi:service/jdbc/blogdb, expecting a DataSource, gets a classcast exception, 
because an XADataSource is returned. 

A neat solution is to add a service ranking (which adds, say, 1000 to the 
original service ranking) to the re-registered DataSource so that it is 
returned in preference to the XADataSource when a short-form JNDI lookup is 
done.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to