Java jboss上的spring类装入器隔离问题
我在jboss上部署了两个EAR,具有适当的类装入器隔离设置。当SeamBean调用SpringBean对数据库进行一些查询时,一切正常,但当调用SpringQuartz作业bean并尝试执行数据库查询时,就会出现问题,因为spring也尝试从其他ear使用HibernateJAR,并引发异常!很明显,这是spring类装入器隔离问题。有人遇到过这样的问题吗?如何确保隔离?我敢打赌SEAM使用的Hibernate JAR来自JBOSS类装入器,它在任何EAR类装入器之前被调用。这是因为SEAM与JBOSS捆绑在一起 Spring in the EAR使用的是不同版本的Hibernate JAR或其依赖项,因此会产生冲突 您要么必须从JBOSS中删除Hibernate JAR,使其不再对AppServer类加载器可见,但这可能会破坏SEAMJava jboss上的spring类装入器隔离问题,java,jboss,classloader,Java,Jboss,Classloader,我在jboss上部署了两个EAR,具有适当的类装入器隔离设置。当SeamBean调用SpringBean对数据库进行一些查询时,一切正常,但当调用SpringQuartz作业bean并尝试执行数据库查询时,就会出现问题,因为spring也尝试从其他ear使用HibernateJAR,并引发异常!很明显,这是spring类装入器隔离问题。有人遇到过这样的问题吗?如何确保隔离?我敢打赌SEAM使用的Hibernate JAR来自JBOSS类装入器,它在任何EAR类装入器之前被调用。这是因为SEAM与
您可能会看到JBOSS是否有办法告诉应用服务器在EAR配置中更喜欢应用级JAR而不是服务器JAR。假设JBOSS 4.x,然后在deploy/EAR-deployer.xml文件中,确保启用了类加载器隔离,例如
<server>
<mbean code="org.jboss.deployment.EARDeployer" name="jboss.j2ee:service=EARDeployer">
<attribute name="Isolated">true</attribute>
<attribute name="CallByValue">false</attribute>
<attribute name="EnablelibDirectoryByDefault">true</attribute>
</mbean>
</server>
我不确定这是否有用,也不确定它的用途,但在某些情况下,它似乎加强了耳朵之间的隔离
<jboss-app>
<loader-repository>MyCompany:loader=MyApplication</loader-repository>
</jboss-app>