我必须为遗留EJB添加自定义功能。我假装通过ejb-jar.xml假装使用Interceptor来完成这样的任务,因为我无法编辑源代码以使用@Interceptors注释重新编译它。
是否可以在包含感兴趣的EJB的JAR之外定义ejb-jar.xml文件?目前,该jar包含自己的ejb-jar.xml,因此我需要覆盖它或“扩展”它的定义。
亲切的问候。
答案 0 :(得分:0)
是否可以在包含感兴趣的EJB的JAR之外定义ejb-jar.xml文件?
不,如果存在ejb-jar.xml文件,则必须将其存储在META-INF / ejb-jar.xml中。
请注意,部署描述符文件不会严格考虑source code
。您完全可以提取ejb.jar.xml,修改它(在您的情况下配置Interceptor规则)并再次将所有部分打包在一起。
这种做法得到JEE规范的支持,完全合法。 它是部署描述符文件优于代码注释的优势之一。
答案 1 :(得分:0)
这是组件ejb库的问题。如果库不是为了在其他模块/项目中重用而没有合理的方法 - 只提取和修改ejb-jar.xml。
如果ejb库应该在其他项目中重用,则不应该定义ejb-jar.xml。比任何项目都可以使用META-INF / MANIFEST.MF Class-Path条目在自己的ejb模块中包含此库。
另一种方法是创建另一个仅包含拦截器的ejb库,并将两个ejb库捆绑到一个耳朵中。