如果是这样,你怎么做?
我有一个ejb @javax.interceptor.AroundInvoke
拦截器,我喜欢进入一个库以供重用。我将代码移动到一个库中,修复了maven中的依赖项,现在所有编译都很好。仅在部署时,我收到以下错误消息:
09.02.2011 14:19:48 com.sun.logging.LogDomains$1 log
SCHWERWIEGEND: Exception while invoking class org.glassfish.ejb.startup.EjbApplication start method
java.lang.RuntimeException: java.lang.ClassNotFoundException:
答案 0 :(得分:2)
来自 JSR 318:Enterprise JavaBeans,3.1版 - EJB核心合同和要求:
20.3包装要求
ejb-jar文件或.war文件必须 包含,包含或 by 参考,每个的类文件 enterprise bean如下:
- 企业bean类。
- 企业bean业务接口,Web服务端点 接口,家庭和组件 接口。
- 拦截器类。
- 如果bean是实体bean,则为主键类。
我们说.jar文件包含第二个文件“by reference”if 第二个文件在Class-Path中命名 属性在Manifest文件中 引用.jar文件或包含 (通过包含或通过引用) 在另一个命名的.jar文件中 中的Class-Path属性 引用.jar的清单文件 文件。
所以我说是的,你可以将拦截器类封装在库.jar文件中。
检查:1)该库实际上已打包并使用ejb-jar文件进行部署; 2)如上所述,库文件.jar在Manifest文件中被引用。