title: Karaf with Hibernate does not start my persistence unit
body: <p>I need some help with troubleshooting why my persistence unit is not loaded in Karaf using Hibernate.  The log file reports </p>
  
  <pre><code>Bundle com.vogelware.simple.remote.combined is waiting for dependencies [(&amp;(&amp;(org.apache.aries.jpa.proxy.factory=true)(osgi.unit.name=person)(objectClass=javax.persistence.EntityManagerFactory))].
  </code></pre>
  
  <p>I think the issue is the EntityManagerFactory service is not running.  Based on SO message <a href="https://stackoverflow.com/questions/18387239/jpa-hibernate-error-while-starting-the-service">Jpa-hibernate error while starting the service</a> all of the required services are running.  See below.</p>
  
  <p>I have tried starting my persistence bundle before hibernate bundles but get the same behavior.</p>
  
  <p>Listed below are the blueprints for datasource, persistence and persistence.xml.</p>
  
  <p>Any suggestions on how to get this simple example running?</p>
  
  <p><em>Features and bundles with version installed</em></p>
  
  <pre><code>karaf@root&gt; feature:list -i
  Name        | Version          | Installed | Repository              | Description
  -------------------------------------------------------------------------------------------------------------------------
  standard    | 3.0.1            | x         | standard-3.0.1          | Karaf standard feature
  config      | 3.0.1            | x         | standard-3.0.1          | Provide OSGi ConfigAdmin support
  region      | 3.0.1            | x         | standard-3.0.1          | Provide Region Support
  package     | 3.0.1            | x         | standard-3.0.1          | Package commands and mbeans
  http        | 3.0.1            | x         | standard-3.0.1          | Implementation of the OSGI HTTP Service
  kar         | 3.0.1            | x         | standard-3.0.1          | Provide KAR (KARaf archive) support
  ssh         | 3.0.1            | x         | standard-3.0.1          | Provide a SSHd server on Karaf
  management  | 3.0.1            | x         | standard-3.0.1          | Provide a JMX MBeanServer and a set of MBeans in K
  transaction | 1.0.1            | x         | enterprise-3.0.1        | OSGi Transaction Manager
  jpa         | 1.0.1            | x         | enterprise-3.0.1        | OSGi Persistence Container
  hibernate   | 4.3.1.Final      | x         | enterprise-3.0.1        | Hibernate 4.3.x JPA persistence engine support
  jndi        | 3.0.1            | x         | enterprise-3.0.1        | OSGi Service Registry JNDI access
  pax-jetty   | 8.1.14.v20131031 | x         | org.ops4j.pax.web-3.1.0 | Provide Jetty engine support
  pax-http    | 3.1.0            | x         | org.ops4j.pax.web-3.1.0 | Implementation of the OSGI HTTP Service
  
  karaf@root&gt; bundle:list
  START LEVEL 100 , List Threshold: 50
   ID | State       | Lvl | Version               | Name
  ---------------------------------------------------------------------------------------
   86 | Active      |  80 | 3.0.1                 | Apache Karaf :: JNDI :: Command
  114 | Active      |  80 | 2.7.7.5               | Apache ServiceMix :: Bundles :: antlr
  115 | Active      |  80 | 1.8.2.2               | Apache ServiceMix :: Bundles :: ant
  116 | Active      |  80 | 1.6.1.5               | Apache ServiceMix :: Bundles :: dom4j
  117 | Active      |  80 | 1.14.1.1              | Apache ServiceMix :: Bundles :: serp
  118 | Active      |  80 | 0.9.0                 | ClassMate
  119 | Active      |  80 | 3.18.1.GA             | Javassist
  120 | Active      |  80 | 1.0.2.Final           | JACC 1.4 API
  121 | Active      |  80 | 0                     | wrap_mvn_org.jboss_jandex_1.1.0.Final
  122 | Active      |  80 | 3.1.4.GA              | JBoss Logging 3
  123 | Active      |  80 | 4.0.4.Final           | hibernate-commons-annotations
  124 | Active      | 100 | 4.3.1.Final           | hibernate-core
  125 | Active      | 100 | 4.3.1.Final           | hibernate-entitymanager
  126 | Active      | 100 | 4.3.1.Final           | hibernate-osgi
  127 | Active      |  80 | 10.10.1000001.1458268 | Apache Derby 10.10
  128 | Active      |  80 | 0.0.0                 | derby-datasource.xml
  129 | GracePeriod |  80 | 0.1.0.201411290933    | Remote with JPA
  130 | Active      |  80 | 0.1.0.201411280737    | Simple Model API
  </code></pre>
  
  <p><em>Running services for EntityManager</em></p>
  
  <pre><code>karaf@root(service)&gt; list javax.transaction.TransactionManager
  [org.apache.aries.transaction.AriesTransactionManager, javax.transaction.TransactionManager, javax.transaction.TransactionSynchroniz
  ationRegistry, javax.transaction.UserTransaction, org.apache.geronimo.transaction.manager.RecoverableTransactionManager]
  ------------------------------------------------------------------------------------------------------------------------------------
  ------------------------------------------------------------------------------------------------------------------------
   service.id = 662
  Provided by :
   Apache Aries Transaction Manager (93)
  Used by:
   Aries JPA Container Managed Contexts (91)
  
  karaf@root(service)&gt; list DataSource
  [javax.sql.DataSource]
  ----------------------
   osgi.jndi.service.name = jdbc/MotorDB
   osgi.service.blueprint.compname = MotorDB
   service.id = 713
  Provided by :
   Bundle 130 (my datasource bundle)
  
  @root(service)&gt; list PersistenceProvider
  [javax.persistence.spi.PersistenceProvider]
  -------------------------------------------
   javax.persistence.provider = org.hibernate.jpa.HibernatePersistenceProvider
   service.id = 708
  Provided by :
   hibernate-osgi (125)
  </code></pre>
  
  <p><em>Peristence XML</em></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
  &lt;persistence version="2.0"
      xsi:schemaLocation="
          http://java.sun.com/xml/ns/persistence
          http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
      xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
  
      &lt;persistence-unit name="person" transaction-type="JTA"&gt;
          &lt;provider&gt;org.hibernate.jpa.HibernatePersistenceProvider&lt;/provider&gt;
          &lt;jta-data-source&gt;osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/MotorDB)&lt;/jta-data-source&gt;
          &lt;class&gt;com.vogelware.simple.model.impl.jpa.Person&lt;/class&gt;
          &lt;class&gt;com.vogelware.simple.model.impl.jpa.Address&lt;/class&gt;
          &lt;exclude-unlisted-classes&gt;true&lt;/exclude-unlisted-classes&gt;
  
          &lt;properties&gt;
          &lt;/properties&gt;
      &lt;/persistence-unit&gt;
  &lt;/persistence&gt; 
  </code></pre>
  
  <p><em>Datasource blueprint</em></p>
  
  <pre><code>&lt;blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      default-activation="eager"&gt;
  
      &lt;bean id="MotorDB" class="org.apache.derby.jdbc.EmbeddedDataSource"&gt;
          &lt;property name="databaseName" value="D:\dev\projects\EASA-DB\motordb" /&gt;
      &lt;/bean&gt;
  
      &lt;service ref="MotorDB" interface="javax.sql.DataSource"&gt;
          &lt;service-properties&gt;
              &lt;entry key="osgi.jndi.service.name" value="jdbc/MotorDB" /&gt;
          &lt;/service-properties&gt;
      &lt;/service&gt;
  &lt;/blueprint&gt;
  </code></pre>
  
  <p><em>Persistence beans</em></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;blueprint default-activation="eager"
      xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0" xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0"
      xsi:schemaLocation="
              http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0 
              http://www.w3.org/2001/XMLSchema-instance http://www.w3.org/2001/XMLSchema-instance 
              http://aries.apache.org/xmlns/jpa/v1.0.0 http://aries.apache.org/xmlns/jpa/v1.0.0 
              http://aries.apache.org/xmlns/transactions/v1.0.0 http://aries.apache.org/xmlns/transactions/v1.0.0 "&gt;
  
      &lt;bean id="personService" class="com.vogelware.simple.remote.jpa.PersonEntityImplJpa"&gt;
          &lt;jpa:context unitname="person" property="entityManager" /&gt;
          &lt;tx:transaction method="*" value="Required" /&gt;
      &lt;/bean&gt;
  
      &lt;service ref="personService"
          interface="com.vogelware.simple.service.IPersonEntity"&gt;
          &lt;service-properties&gt;
              &lt;entry key="osgi.jndi.service.name" value="hibernate/con_managed_personService" /&gt;
          &lt;/service-properties&gt;
      &lt;/service&gt;
  &lt;/blueprint&gt;
  </code></pre>