Сбой развертывания веб-приложения с интерфейсом, не видимым из исключения загрузчика классов

#java #spring #hibernate #web-applications #weblogic12c

#java #spring #переход в спящий режим #веб-приложения #weblogic12c

Вопрос:

У меня есть новый сервер weblogic 12c, на котором я пытался развернуть веб-приложение на основе spring hibernate, и развертывание завершается неудачей со следующим исключением:

 <Mar 13, 2019 12:58:51,096 PM IST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID "346350192983496" for task "0" on [partition-name: DOMAIN]. Error is: "weblogic.application.ModuleException: java.lang.IllegalArgumentException: interface javax.persistence.EntityManagerFactory is not visible from class loader"
weblogic.application.ModuleException: java.lang.IllegalArgumentException: interface javax.persistence.EntityManagerFactory is not visible from class loader
        at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:114)
        at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
        at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:192)
        at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:187)
        at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:83)
        Truncated. see log file for complete stacktrace
Caused By: java.lang.IllegalArgumentException: interface javax.persistence.EntityManagerFactory is not visible from class loader
        at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:581)
        at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:557)
        at java.lang.reflect.WeakCache$Factory.get(WeakCache.java:230)
        at java.lang.reflect.WeakCache.get(WeakCache.java:127)
        at java.lang.reflect.Proxy.getProxyClass0(Proxy.java:419)
        Truncated. see log file for complete stacktrace
  

Я использую веб-приложение на базе Java 8, вот версии различных решений / библиотек:
Weblogic: 12.2.1.3.0 spring: 5.0.6 hibernate: 5.1.0

weblogic.xml:

 <weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">

<context-root>/iamws/adc</context-root>
<wls:container-descriptor>
    <wls:prefer-web-inf-classes>false</wls:prefer-web-inf-classes>
    <wls:prefer-application-packages>
        <wls:package-name>org.springframework.*</wls:package-name>
        <wls:package-name>org.joda.*</wls:package-name>
        <wls:package-name>com.sun.activation.*</wls:package-name>
        <wls:package-name>javax.activation.*</wls:package-name>
        <wls:package-name>com.sun.mail.*</wls:package-name>
        <wls:package-name>javax.mail.*</wls:package-name>
        <wls:package-name>org.slf4j.*</wls:package-name>
        <wls:package-name>org.jboss.*</wls:package-name>
        <wls:package-name>org.apache.log4j.*</wls:package-name>
        <wls:package-name>javax.persistence.*</wls:package-name>
    </wls:prefer-application-packages>
</wls:container-descriptor>

</weblogic-web-app>
  

Комментарии:

1. у вас есть weblogic.xml ?

2. Да, у меня есть weblogic.xml в моей войне, добавленной в проблему сейчас.

3. добавление java.persistence-api-2.2 jar в $DOMAIN_HOME / lib решило мою проблему, но мне кажется, что это взлом, есть другие предложения?

Ответ №1:

Я смог решить эту проблему, добавив следующее в weblogic.xml:

 <wls:package-name>org.hibernate.*</wls:package-name>