2012-07-02 52 views
1

我假設有一種方法可以在獨立的Felix 4.0.2 OSGi框中使用嵌入式Java數據庫實例。然而,我似乎無法找到任何線索,我應該如何設置整個事情:我應該使用什麼實現捆綁?我應該如何設置它?來自Felix的嵌入式Java DB?

我嘗試了很多事情,包括從glassfich 3.1.2安裝獲取專用包,但無論我做什麼,都沒有持久性管理器被框架註冊以提供我的應用程序。

我的代碼,否則如下所有大專院校的戒律,用AA ServiceTracker的被註冊,瞭解EntityManagerFactory的註冊,但沒有發現...... 這是我的persistence.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="1.0" 
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> 

<persistence-unit name="com.julianware.toolbox.logbacktracker.pu" 
    transaction-type="RESOURCE_LOCAL"> 
    <!-- mapping-file>META-INF/maintenance_orm.xml</mapping-file> 
    <mapping-file>META-INF/vehicle_orm.xml</mapping-file --> 

    <class>com.julianware.toolbox.logbacktracker.pu.LoggerEvent</class> 

    <exclude-unlisted-classes>true</exclude-unlisted-classes> 

    <properties> 
     <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" /> 
     <property name="javax.persistence.jdbc.url" value="jdbc:derby:database;create=true" /> 
     <property name="javax.persistence.jdbc.user" value="felix" /> 
     <property name="javax.persistence.jdbc.password" value="felix" /> 
    </properties> 
</persistence-unit> 

我的Activator的start()方法:

public void start(final BundleContext context) throws Exception { 
    Filter filter = context.createFilter(String.format("(&(%s=%s)(%s=%s))", 
     OBJECTCLASS, EntityManagerFactory.class.getName(), 
     EntityManagerFactoryBuilder.JPA_UNIT_NAME, "com.julianware.toolbox.logbacktracker.pu") 
    ); 
    entityManagerFactoryTracker = new ServiceTracker(context, filter, new ServiceTrackerCustomizer() { 

     @Override 
     public void removedService(ServiceReference reference, Object service) {} 

     @Override 
     public void modifiedService(ServiceReference reference, Object service) {} 

     @Override 
     public Object addingService(ServiceReference reference) { 
      logger.debug("Found Entity Manager Service reference."); 
      entityManagerFactory = (EntityManagerFactory) context.getService(reference); 
      return entityManagerFactory; 
     } 
    }); 
    entityManagerFactoryTracker.open(); 

} 

最後,我在JDK 7上.Java DB實現是jdk安裝。 有沒有人知道任何事情?

強大的感謝。 朱利安

回答

0

我不確定,但你可以嘗試從Maven中心德比。它應該包含正確的OSGi元數據。

+0

謝謝。但還是有一些缺失。 EMF服務跟蹤器仍然沒有提供任何相關服務...... –

相關問題