我們使用基於Equinox的OSGI框架來運行Multiple bundle。
我們的bundle在Bundle-classpath中有依賴的JAR,並且依賴的JAR與其餘的類和資源一起打包在單個JAR/WAR文件中。 但是我們在運行多個這樣的Bundle時遇到了問題。
說,
捆綁A:完全測試/工作JAR捆綁。包含bundle classpath中的所有依賴JAR以及所有依賴JAR(位於名爲lib的文件夾下)。當通過部署僅此束即使所需的JAR位於Bundle-classpath中,OSGI類也不可見
捆B測試工作的罰款:類似於捆綁A.再次單獨部署
但是,當這兩個束被加載時一起工作,OSGI不能從在所提到的JAR加載類第二次加載的捆綁包的bundle-classpath。首先加載的bundle運行正常,而加載的bundle則失敗。
當SPRING嘗試加載javax.persistence.QueryHint
類時,會出現此問題。 (在束相同的JAR)
- 春:3.0.6.RELEASE
我們用我們的XXXX-EntityManager.xml我們創造我們使用
entityManagerFactory
相關的JAR創建數據源JARS
- 休眠:3.6.7 JARS
- 休眠-JPA:休眠-JPA-2.0-API-1.0.1.Final.jar
例外: PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'targetDataSources' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [xxxx-EntityManager.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: interface javax.persistence.QueryHint is not visible from class loader at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:102) at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1358)
注:
- 無論是捆綁單獨檢測,並工作正常
- 我們知道,而不是創建捆綁-classpath中,我們可以提取外部的第三方JAR文件捆綁並使用導入包。但是對於這個當前的需求,我們只需要父包中的第三方JAR。
要求OSGI專家請幫助我們。
我覺得下面的答案已經跳起來了,我們首先需要更多的信息。它*應該*可以創建兩個捆綁包,因此它們完全隔離並單獨工作。我想知道在* working *包中加載了哪個'javax.persistence'包。 –