Jakarta ee 发生EAR时MyBatis CDI类装入器问题
我有一只耳朵,目前只听一场战争。我的问题是,如果mybatis-..jar文件位于web module.war\web-INF\lib下,那么一切都正常。但是,如果我与maven创建了一场骨瘦如柴的战争,并且两个与mybatis相关的JAR位于EAR/lib下,我会得到一个警告:没有正确配置SqlSessionFactory生产者。错误 我认为这是一个与类路径相关的问题 我计划在我的耳朵里加入更多的战争,我希望避免在每次战争中使用这两个罐子 环境:Java8,Payara服务器4.1.2.172 这是我耳朵的结构,但不起作用 web模块包含一个带有注入EJB的servlet。此EJB使用myBatis映射器 Servlet EJB 我尝试使用以下内容将MANIFEST.MF文件添加到ear\web module.war\META-INF目录,但没有帮助:Jakarta ee 发生EAR时MyBatis CDI类装入器问题,jakarta-ee,cdi,mybatis,ear,ibatis,Jakarta Ee,Cdi,Mybatis,Ear,Ibatis,我有一只耳朵,目前只听一场战争。我的问题是,如果mybatis-..jar文件位于web module.war\web-INF\lib下,那么一切都正常。但是,如果我与maven创建了一场骨瘦如柴的战争,并且两个与mybatis相关的JAR位于EAR/lib下,我会得到一个警告:没有正确配置SqlSessionFactory生产者。错误 我认为这是一个与类路径相关的问题 我计划在我的耳朵里加入更多的战争,我希望避免在每次战争中使用这两个罐子 环境:Java8,Payara服务器4.1.2.172
Class-Path: lib/mybatis-3.4.4.jar lib/mybatis-cdi-1.0.0.jar
<glassfish-web-app>
<class-loader delegate="true" extra-class-path="../lib/mybatis-3.4.4.jar:../lib/mybatis-cdi-1.0.0.jar"/>
</glassfish-web-app>
我还尝试将glassfish-web.xml文件添加到ear\web module.war\web-INF目录,如前所述,但没有帮助:
Class-Path: lib/mybatis-3.4.4.jar lib/mybatis-cdi-1.0.0.jar
<glassfish-web-app>
<class-loader delegate="true" extra-class-path="../lib/mybatis-3.4.4.jar:../lib/mybatis-cdi-1.0.0.jar"/>
</glassfish-web-app>
知道如何解决这个类路径问题吗?我不清楚这是否是我们最终得出这个结论的原因,但是:让您的EAR组件在EAR归档中解压用于WAR和EJB的简单文件夹可能会有所帮助 以下是Maven的配置:
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<applicationName>myApp</applicationName>
<version>6</version>
<filtering>true</filtering>
<initializeInOrder>true</initializeInOrder>
<defaultLibBundleDir>APP-INF/lib</defaultLibBundleDir>
<unpackTypes>war,ejb</unpackTypes>
<modules>
<ejbModule>
<groupId>com.example</groupId>
<artifactId>myapp-ejb</artifactId>
<bundleFileName>myapp-ejb.jar</bundleFileName>
</ejbModule>
<webModule>
<groupId>com.example</groupId>
<artifactId>myapp-rest</artifactId>
<contextRoot>/myapp</contextRoot>
<bundleFileName>myapp.war</bundleFileName>
</webModule>
</modules>
</configuration>
</plugin>
这就是解决方案:
全文如下:
全文如下:
src:
src:
Class-Path: lib/mybatis-3.4.4.jar lib/mybatis-cdi-1.0.0.jar
<glassfish-web-app>
<class-loader delegate="true" extra-class-path="../lib/mybatis-3.4.4.jar:../lib/mybatis-cdi-1.0.0.jar"/>
</glassfish-web-app>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<applicationName>myApp</applicationName>
<version>6</version>
<filtering>true</filtering>
<initializeInOrder>true</initializeInOrder>
<defaultLibBundleDir>APP-INF/lib</defaultLibBundleDir>
<unpackTypes>war,ejb</unpackTypes>
<modules>
<ejbModule>
<groupId>com.example</groupId>
<artifactId>myapp-ejb</artifactId>
<bundleFileName>myapp-ejb.jar</bundleFileName>
</ejbModule>
<webModule>
<groupId>com.example</groupId>
<artifactId>myapp-rest</artifactId>
<contextRoot>/myapp</contextRoot>
<bundleFileName>myapp.war</bundleFileName>
</webModule>
</modules>
</configuration>
</plugin>