我们正在使用基于Equinox的OSGI框架来运行多个包.
我们的捆绑软件在Bundle-classpath中具有依赖的JAR,并且依赖的JAR与其余的类和资源一起打包在一个JAR / WAR文件中.
但是,在运行多个此类捆绑包时我们遇到了问题.
说,
套件A:经过全面测试/工作的JAR套件.包含捆绑软件类路径中的所有从属JAR,以及其中的所有从属JAR(在名为lib的文件夹下).通过仅部署此捆绑包进行测试时可以正常工作
捆绑软件B:与捆绑软件A类似.单独部署时再次工作
但是,当两个捆绑软件一起加载时,OSGI无法从第二次加载的捆绑软件的捆绑软件类路径中提到的JAR中加载类.首先加载的捆绑包运行正常,而第二次加载的捆绑包失败.
当前在SPRING尝试加载javax.persistence.QueryHint类时发生此问题.
我们使用xxxx-EntityManager.xml创建数据源,并在其中创建EntityManagerFactory
使用的从属JAR :(两个捆绑包中的相同JAR)
>春季:3.0.6.释放JARS
>休眠:3.6.7 JARS
> Hibernate-JPA:hibernate-jpa-2.0-api-1.0.1.Final.jar
例外:
PropertyAccessException 1:org.springframework.beans.MethodInvocationException:属性’targetDataSources’抛出异常;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建类路径资源[xxxx-EntityManager.xml]中定义的名称为’entityManagerFactory’的bean时出错:调用init方法失败;嵌套异常是java.lang.IllegalArgumentException:接口javax.persistence.QueryHint从类加载器中不可见
在org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:102)
在org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58)
在org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.applyPropertyValues(AbstractAutowireCapablebeanfactory.java:1358)
注意:
>两个捆绑包都经过单独测试,工作正常
>我们知道,除了创建Bundle-classpath之外,我们还可以在捆绑软件之外提取第三方JAR,并使用import-package.但是对于此当前要求,我们仅需要父捆绑包内的第三方JAR.
要求OSGI专家请帮助我们.