2011-02-09 67 views
1

如果是的话,你如何做到这一点?你可以在库中封装一个ejb拦截器吗?

我有一个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: 

回答

2

JSR 318:企业JavaBeans,3.1版 - EJB核心合同和需求

20.3包装要求

ejb-jar文件或.war文件必须包含 ,包含或由, 参考,th每个 企业bean的e类文件如下:

  • 企业bean类。
  • 企业bean业务接口,web服务端点 接口,家庭和组件 接口。
  • 拦截器类。
  • 如果bean是实体bean,则为主键类。

我们说一个.jar文件包含第二个文件“通过引用”如果 第二个文件是在类路径命名 在 的清单文件属性引用.jar文件或包含 在 中命名的另一个.jar文件中引用.jar 文件的 清单文件中的Class-Path属性。

所以我会说是的,你可以将拦截器类打包到库.jar文件中。

检查:1)该库实际上已打包并部署到ejb-jar文件中;和2)库文件.jar在Manifest文件中被引用,如上所述。

+0

谢谢。将` true`添加到`maven-ejb-plugin`中是个诀窍。有趣的是,jar本身并没有被添加到ejb-jar中。您必须将库添加到EAR文件相关性中,以便将该库添加到企业归档文件中。为那些发现这个问题的人提示:不要忘记'maven-ear-plugin`设置中的' lib` – Martin 2011-02-11 14:16:29

相关问题