我正在使用 JavaEE 6、EJB3、JSF2 和 JPA 来开发一个网上商店、后端逻辑和桌面管理应用程序。为此,我正在使用 Netbeans 7 和 Glassfish。
我想,在我使用 Glassfish 时遇到的许多稳定性问题中,其中一个确实是 bug。当它爬起来时,实际上没有办法修复它,直到它自行消失并且一切都会继续工作很短的一段时间,直到它回来。
它会在 EJB 模块停止工作时反映自身。Web 应用程序运行,桌面运行,但都不能访问 EJB。运行 EAR 时 Glassfish 服务器输出中的常见消息类似于:
警告:注释处理错误:java.lang.NoClassDefFoundError: rs/elfak/eposlovanje/beans/ManagerBeanRemote
警告:注释处理错误:java.lang.NoClassDefFoundError:rs/elfak/eposlovanje/beans/SubcategoryBeanRemote 警告:注释处理错误:java.lang.NoClassDefFoundError:rs/elfak/eposlovanje/beans/ProductBeanRemote
警告:注释处理错误:java.lang.NoClassDefFoundError: rs/elfak/eposlovanje/beans/CategoryBeanRemote
警告:注释处理错误:java.lang.NoClassDefFoundError: rs/elfak/eposlovanje/beans/ManagerBeanRemote
警告:注释处理错误:java.lang.NoClassDefFoundError: rs/elfak/eposlovanje/beans/SubcategoryBeanRemote
警告:注释处理错误:java.lang.NoClassDefFoundError: rs/elfak/eposlovanje/beans/ProductBeanRemote
警告:注释处理错误:java.lang.NoClassDefFoundError: rs/elfak/eposlovanje/beans/CategoryBeanRemote
严重:类 [ Lrs/elfak/eposlovanje/beans/CategoryBeanRemote; ] 未找到。出错时
加载[类练习.UiBean]
严重:类 [ Lrs/elfak/eposlovanje/beans/CategoryBeanRemote; ] 未找到。加载 [ class exercise.UiBean ] 时出错
这导致我的 CDI bean 崩溃,这就是所谓的UiBean
(我没有走得足够远,所以命名只是暂时的)。
在 glassfish 控制台下,它还显示加载 UiBean 的错误,原因是:
org.jboss.weld.resources.spi.ResourceLoadingException:加载类exercise.UiBean时出错。. .
引起:java.lang.NoClassDefFoundError: Lrs/elfak/eposlovanje/beans/CategoryBeanRemote; 在 java.lang.Class.getDeclaredFields0(Native Method) 在 java.lang.Class.privateGetDeclaredFields(Class.java:2317) 在 java.lang.Class.getDeclaredFields(Class.java:1762)...
对于每个 EJB,依此类推。xxxRemote 项实际上是远程接口,EJB 的名称是这样的,但没有 Remote 后缀。
有时我会收到与 JPA 相关的错误,因为它无法创建表或执行 SQL(有时它会尝试删除表,尽管将 persistance.xml 设置为不创建表)。但这通常会在击中 Run 几次后消失。
对此可以做些什么?我已经在 Google 上搜索了几个解决方案,例如清理 AppData 中的一些 Netbeans 缓存、重新添加 ejb 和 war 项目、复制库,但没有什么能真正解决它。
我是否应该尝试其他一些应用程序服务器,因为在我看来它是我问题的根源?