Мы используем OSGI-каркас на основе Equinox для запуска нескольких пакетов.
Наши пакеты имеют зависимые JAR-файлы в Bundle-classpath, а зависимые JAR-файлы упакованы вместе с остальными классами и ресурсами в один файл JAR / WAR.
Но у нас есть проблема при запуске нескольких таких комплектов.
Скажем,
Пакет A: Полностью протестированный / рабочий пакет JAR. Содержит все зависимые файлы JAR в пути к классам комплекта и все зависимые файлы JAR внутри (в папке с именем lib). Работает нормально при тестировании путем развертывания только этого пакета
Пакет B: аналогично Пакету А. Снова работает при развертывании отдельно
Но когда оба пакета загружаются вместе, OSGI не может загружать классы из JAR, упомянутых в bundle-classpath для пакета, который загружается вторым. Пакет, загруженный первым, работает нормально, а пакет, загруженный вторым, завершается неудачей.
В настоящее время эта проблема возникает, когда SPRING пытается загрузить класс javax.persistence.QueryHint
.
Мы создаем источник данных, используя наш xxxx-EntityManager.xml, где мы создаем наш entityManagerFactory
Используются зависимые JAR: (одинаковые JAR в обоих комплектах)
- Пружина: 3.0.6. ВЫПУСКНЫЕ ЯЩИКИ
- Hibernate: 3,6,7 JARS
- Hibernate-JPA: hibernate-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)
Примечание:
- Оба комплекта были индивидуально протестированы и работают нормально
- Мы знаем, что вместо создания Bundle-classpath мы можем извлечь сторонние JAR-файлы вне пакетов и использовать import-package. Но для этого текущего требования нам нужны сторонние JAR-файлы только внутри родительского пакета.
Запрос экспертов OSGI, пожалуйста, помогите нам.