我試圖讓一個WAR文件在Karaf OSGi容器內運行。該應用程序正常運行在單機碼頭6.1.26,但是當應用程序Karaf內運行,我得到下面的異常和Karaf實例凍結:如何讓Spring JPA,Hibernate和OSGi發揮出色?
WARN org.hibernate.ejb.packaging.InputStreamZippedJarVisitor - Unable to find
file (ignored): bundle://125.0:240/ java.lang.NullPointerException: in is null
注意,應用程序不依賴於休眠在單獨的OSGi包中;它包含了WEB-INF/lib中的hibernate jar。
我檢查了這篇文章上的信息:Equinox (OSGi) and JPA/Hibernate - Finding Entities。但是,應用程序正在使用JPA,而不是直接使用Hibernate。應用程序的配置非常類似於本文中的第二個選項:Difference between configuring data source in persistence.xml and in spring configuration files。因此,我沒有Hibernate SessionFactory的句柄,它允許我設置annotatedClasses屬性。
有關如何克服異常的想法?
有關Spring JPA persistence.xml文件的示例,請參見[Spring Framework參考手冊的第12.6.1.3節](http://static.springsource.org/spring/docs/2.5.x/reference/ orm.html)。對於這個解決方案,orm.xml文件只包含''元素和一個嵌套的''元素,每個類的完全限定類名包含@Entity註釋。 metadata-complete =「false」屬性告訴hibernate從類iteself中指定的註釋中讀取orm.xml文件中未指定的所有數據(在本例中爲所有內容)。 –
Adam
2011-03-18 00:59:49