'应该指定不明确的EJB引用“beanName”或更精确的“beanInterface”

时间:2012-02-04 01:20:09

标签: intellij-idea ejb-3.0

我有一个多模块项目,其中项目BarService中的EJB bar引用FooService项目中的foo EJB。 @EJB注释用于注入EJB。

@EJB
private FooService fooService;

我正在使用IntellijIDEA 11,它抱怨

  

'应该指定不明确的EJB引用“beanName”或更精确的“beanInterface”。

此错误仅出现在不同模块中的EJB引用中。如果我按照建议使用beanName,则错误就会消失。但是我宁愿不使用它,因为它很难重构组件名称,因为它是一个字符串。

这是IDEA中的错误,还是我在这里做错了什么?

(注意thisthis在JetBrains论坛中提出完全相同的问题,但遗憾的是没有回复)。

1 个答案:

答案 0 :(得分:3)

javax.ejb.EJB的javadoc在这一点上有点不清楚:

  

如果没有提供明确的链接信息且只有一个   会话bean 在同一个应用程序中公开匹配   客户端视图类型,默认情况下,EJB依赖关系解析为该类型   会话bean。

这个上下文中的应用程序是否意味着“EJB模块”或“EAR”是有争议的,所以我不一定认为IDEA应该受到指责。我不熟悉其他供应商,但至少在考虑EAR中所有模块中的所有EJB之前,WebSphere Application Server将尝试在客户端EJB / WAR模块中消除歧义。