一段时间以来,我一直在试图解决一个问题。
我使用相同的EJB.jar和相同的JPA.jar将两个EAR文件部署到Wildfli8.1.0中,但是使用单独的EJB.jars来“调度”A.K.A,运行EJB中的不同函数。调度程序访问EJB.jars,而后者又访问JPA.jars。两个EAR/JPAs都使用相同的数据库。
这两只耳朵的布置如下:
EAR1:
EAR2:
一切都部署得很好,但是在运行了几分钟的调度程序之后,我得到了一个用于用户定义类的ClassCastException。示例:
java.lang.ClassException: persistence.Foo cannot be cast to persistence.Foo我尝试过使用依赖、类路径和耳隔离技术,但无法解决我的问题。
只有在部署和运行两个EAR时才会出现此问题,单独运行时不会出现任何问题。
欢迎提出任何建议。提前谢谢。
发布于 2015-01-30 08:42:05
我不知道Jboss如何在内部处理具有相同名称的持久性单元,但是在这些单元之间似乎有一些共享的过程。其中一个JPA.jars已经在缓存中保存了一个对象,然后另一个JPA.jar尝试重用它。
应用程序-服务器为每个ear/war创建自己的类加载器。您尝试将一个对象从war1传递给war2,而war2尝试转换该对象,但不能。
解决方案:创建一个EAR,包含您的JPA和EJB.jar,并部署两个调度jars。
您的部署文件夹将如下所示:
。)Backend.ear
。)Schedular1.jar
。)Schedular2.jar
https://stackoverflow.com/questions/28220183
复制相似问题