OSGI Blueprint入门之八

阅读更多
      Blueprint除了组装bean,osgi服务引用等的DI(IOC)功能之外,还可通过各种命名空间(namespace)来扩展。在《 Blueprint入门之六》中,我们就用过一个与ConfigAdmin相关的命名空间(http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0)。

      除了ConfigAdmin之外,我们还可以看到aries JPA container提供了JPA相关的blueprint命名空间(http://aries.apache.org/xmlns/jpa/v1.1.0) ,Aries JPA Container根据bundle中的persistence.xml构建持久化域单元(persistence domain unit)后,需要将相应的EntityManagerFactory或EntityManager注入到需要用到该持久化域的bean实例里,就可以使用这个命名空间。
persistence.xml:


  
    org.apache.openjpa.persistence.PersistenceProviderImpl
    
osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/myDS)

    com.ponder.*
    
      
    
  


   注:以上persistence.xml中的(osgi.jndi.service.name=jdbc/myDS)是将注册到jndi的jdbc的数据源注入进来。

   注入EntityManagerFactory:



  
        
      
... ....



   注入EntityManager:


 
        
    
... ....



    在事务(Transaction)方面,Blueprint通过命名空间(xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0)支持声明式事务(Declaractive Transaction):



  
  

... ...

你可能感兴趣的:(jpa,osgi,ioc,blueprint,jndi)