Jakarta ee 如何避免在WAR中打包的依赖项JAR中进行EJB注释扫描?

Jakarta ee 如何避免在WAR中打包的依赖项JAR中进行EJB注释扫描?,jakarta-ee,jboss7.x,Jakarta Ee,Jboss7.x,我正在构建一个包含一些@无状态会话bean的WAR项目(位于WEB-INF/classes)。在部署期间,类路径扫描开始,我的bean在JNDI中部署和注册,一切正常 现在我需要在WEB-INF/lib中包含一个依赖项foo service.jar,它包含一些EJB的远程接口和实现(!),这些EJB带有@Stateful和@Stateless注释,我需要从WAR应用程序远程调用这些注释。现在这些bean也被部署了,根据 但是,我不希望部署这些bean,因为我希望使用远程接口的实现,而不是提供它

我正在构建一个包含一些
@无状态
会话bean的WAR项目(位于
WEB-INF/classes
)。在部署期间,类路径扫描开始,我的bean在JNDI中部署和注册,一切正常

现在我需要在
WEB-INF/lib
中包含一个依赖项
foo service.jar
,它包含一些EJB的远程接口和实现(!),这些EJB带有
@Stateful
@Stateless
注释,我需要从WAR应用程序远程调用这些注释。现在这些bean也被部署了,根据

但是,我不希望部署这些bean,因为我希望使用远程接口的实现,而不是提供它

问:在战争中,是否有一些标准机制来禁止对选定JAR进行EJB注释扫描?“嘿,JBoss,不要扫描那个罐子!”


到目前为止,我考虑的方法是:


  • 我可能会重新打包外部依赖项,以便得到一个只包含接口而不包含实现的JAR。(这是在中建议的)触摸罐子感觉很麻烦,我想避免它
  • 要求开发人员将接口和实现拆分为单独的JAR将花费太多的时间,直到发布
  • 我可以将一个
    ejb jar.xml
    放入
    WEB-INF
    中,它只包含我自己的bean,而不包含来自
    foo service.jar
    的bean。我想这会起作用(我还没有尝试过),但它会突然迫使我明确定义所有bean,完全放弃注释扫描的好处
  • 我可以把所有的东西都放在耳朵里,而不用在
    application.xml
    中提到
    fooservice.jar
    。不完全是降低复杂性,而且对于我的小型web应用程序来说,这感觉非常重要

我还没有尝试过这个,但是也许你可以在jboss中添加你的
foo service.jar
作为一个模块。然后在web应用程序中,您可以在
web-INF\jboss deployment structure.xml
(或MANIFEST.MF中的依赖项)中引用该模块。
请参见或

Hi steffen,您使用哪种工具构建战争?maven依赖范围会有帮助吗?@Tim,我正在使用maven构建WAR项目。我还不明白你的想法,这个范围对我有什么帮助。要么我把罐子装进战争中,要么不装。我需要打包JAR(作用域是“编译”),因为我在运行时需要接口类文件。@TimLong,很抱歉回复太晚-我不熟悉用户提到的SO标记语法。请参阅我之前的评论,了解实际回复。你有什么想法吗?你编了
foo service.jar
?“我可能会重新打包外部依赖项,这样我得到一个只包含接口而不包含实现的jar。”这意味着
foo service.jar
是外部的哦,等等,我没有正确地阅读这个问题<代码>我需要包含一个依赖项`foo service.jar`谢谢,我会尝试一下。我将再次考虑是否要将应用程序代码放入模块中,从而分散部署其他几个地方。但你的想法肯定指向了一个好的方向。