使用EHCache-Atomikos的ClassNotFoundException

时间:2010-11-04 16:08:31

标签: java tomcat ehcache jta atomikos

我正在尝试将EHCache的事务功能与Atomikos和Apache Tomcat结合使用(用于JMS和Hibernate,但这只是为了向怀疑者保证我真的需要JTA)。

我正在开发一个小POC,我正在尝试放置一个实现MyValue的{​​{1}}实例,当我尝试提交事务时,我得到__ {{1作为根(堆栈跟踪在末尾)。

当我对Serializable文件进行jar并将其放在%TOMCAT_HOME%\ lib下时,我没有异常。

重要的是要添加,因为我在atomikos tutorial上看到的指令Atomikos的罐子和EHCache罐子都在%TOMCAT_HOME%\ lib下。

这是引用:

  

当在Tomcat中全局安装Atomikos事务管理器时,您现在还必须在同一个全局位置安装JDBC驱动程序(即:进入TOMCAT_HOME / lib文件夹)。如果不这样做,您将在Web应用程序部署期间获得NoClassDefFoundErrors或ClassNotFoundException,甚至是ClassCastException。
  这不是Atomikos和Tomcat的限制,而是Tomcat和Atomikos必须遵循的J2EE类加载设计的限制。

问题是我当然不能在该文件夹下拥有所有的值类。

我是否误入了指令?

有没有人遇到过这个问题?

EHCache.xml

ClassNotFoundException

堆栈跟踪

MyValue

1 个答案:

答案 0 :(得分:1)

  

重要的是,由于我在atomikos教程中看到的指令,Atomikos的罐子和EHCache罐子都在%TOMCAT_HOME%\ lib

来自网络应用程序的类(即由 WebappX 类加载器加载)在 Common classloader(参见Apache Tomcat 6.0 - Class Loader HOW-TO),这就是你获得CNFE的原因。

现在,问题是,为什么要将EHCache JAR放在 Common 类加载器中?我觉得你不需要。将其打包到您的Web应用程序级别。

参考