我有一个多模块项目,其中项目BarService
中的EJB bar
引用FooService
项目中的foo
EJB。 @EJB
注释用于注入EJB。
@EJB
private FooService fooService;
我正在使用IntellijIDEA 11,它抱怨
'应该指定不明确的EJB引用“beanName”或更精确的“beanInterface”。
此错误仅出现在不同模块中的EJB引用中。如果我按照建议使用beanName
,则错误就会消失。但是我宁愿不使用它,因为它很难重构组件名称,因为它是一个字符串。
这是IDEA中的错误,还是我在这里做错了什么?
答案 0 :(得分:3)
javax.ejb.EJB的javadoc在这一点上有点不清楚:
如果没有提供明确的链接信息且只有一个 会话bean 在同一个应用程序中公开匹配 客户端视图类型,默认情况下,EJB依赖关系解析为该类型 会话bean。
这个上下文中的应用程序是否意味着“EJB模块”或“EAR”是有争议的,所以我不一定认为IDEA应该受到指责。我不熟悉其他供应商,但至少在考虑EAR中所有模块中的所有EJB之前,WebSphere Application Server将尝试在客户端EJB / WAR模块中消除歧义。