以下是我在启动服务后看到的日志中的错误...您能否帮助解决此问题。
2013-08-22 10:35:37,111 | DEBUG | l Console Thread | AbstractServiceReferenceRecipe | r.AbstractServiceReferenceRecipe 143 | 7 - org.apache.aries.blueprint.core - 1.1.0 | Found initial references null for OSGi service (&(&(org.apache.aries.jpa.proxy.factory=true)(osgi.unit.name=tenant))(objectClass=javax.persistence.EntityManagerFactory))
2013-08-22 10:35:37,111 | DEBUG | l Console Thread | BlueprintContainerImpl | container.BlueprintContainerImpl 280 | 7 - org.apache.aries.blueprint.core - 1.1.0 | Running blueprint container for bundle com.igt.arcus.framework.jta.arcus-framework-feature-service in state WaitForInitialReferences
2013-08-22 10:35:37,111 | INFO | l Console Thread | BlueprintContainerImpl | container.BlueprintContainerImpl 344 | 7 - org.apache.aries.blueprint.core - 1.1.0 | Bundle com.igt.arcus.framework.jta.arcus-framework-feature-service is waiting for dependencies [(&(&(org.apache.aries.jpa.proxy.factory=true)(osgi.unit.name=tenant))(objectClass=javax.persistence.EntityManagerFactory))]
2013-08-22 10:35:37,112 | DEBUG | l Console Thread | BlueprintEventDispatcher | ntainer.BlueprintEventDispatcher 136 | 7 - org.apache.aries.blueprint.core - 1.1.0 | Sending blueprint container event BlueprintEvent[type=GRACE_PERIOD, dependencies=[(&(&(org.apache.aries.jpa.proxy.factory=true)(osgi.unit.name=tenant))(objectClass=javax.persistence.EntityManagerFactory))]] for bundle com.igt.arcus.framework.jta.arcus-framework-feature-service
答案 0 :(得分:2)
如果您使用Aries JPA,您应该看到两个EntityManagerFactory服务:
第二个在您的环境中不存在。可能有两个原因:
如果您打开OSGi控制台并检查可用的服务,则可以检查它。如果根本没有EntityManagerFactory服务,那么第二个就是你的问题。
检查所有捆绑包是否都处于活动状态!如果是,请检查您是否拥有jpa-container所需的所有服务:TransactionManager,DataSource或DataSourceFactory以及用于Hibernate的javax.persistence.spi.PersistenceProvider服务。如果缺少任何服务,aries-jpa-container将获取您的包但永远不会创建EntityManagerFactory。
我实现了一个自己的jpa容器,其工作方式与aries-jpa-container几乎相同。如果你替换aries-jpa-container(只有那个,jpa-container-context应该留在那里),它会在INFO级别记录更多的消息,为你找不到的东西。容器可用here。 https://github.com/everit-org/osgi-hibernate提供了一个使用hibernate的示例应用程序。运行“mvn install”后,你会发现itests / core / target / eosgi-itests-dist / equinox是一个子文件夹,你可以在equinox服务器上用bin / runconsole.sh启动工作应用程序。
答案 1 :(得分:0)
当前的aries jpa容器jar 1.0.0有一个错误,它会在创建EntityManager时吞下异常。我的一位同事打开了白羊座虫:https://issues.apache.org/jira/browse/ARIES-1160
我创建了第二个补丁,可以应用于1.0.0源代码来创建一个正确记录异常的jar。查看aries jpa容器的1.0.0标签,应用补丁并构建。
当你在karaf中运行时,你应该看到错误的真正来源。