我有@Local接口
@Local
public interface IRepo
{
和两个实现,但只有1 bean实现
@Stateless(name = "RepoBean")
public class RepoBean implements IRepo
{
第二
public class SimpleRepo implements ILogRepositoryIRepo
{
并使用
将其注入我的Web服务 @EJB(name = "RepoBean")
private IRepo repository;
它在jboss
和WebLogic
上运作良好。但是在GlassFish 3.1.1
我得到错误(部署时)
Cannot resolve reference Local ejb-ref name=RepoBean,Local 3.x interface =com.company.IRepo,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session because there are 2 ejbs in the application with interface com.company.IRepo.
但我只有1 ejb 的实现
有任何想法吗?也许我可以使用一些部署 - desriptor或其他东西
EJB 3.0, Java EE 5
答案 0 :(得分:1)
我真的不明白你要做什么,但是如果你有两个实现相同业务接口的bean,你将不得不使用'beanName'属性,如下所示:
@EJB(beanName = "RepoBean")
private IRepo repository;
- 更新
看看这个:java.net/node/702013。此问题存在错误问题:java.net/jira/browse/GLASSFISH-11684
这种情况似乎只发生在EJB-in-WAR包装中。在ejb jar中没有发生。
答案 1 :(得分:0)
嗯,Glassfish比JBoss和WebLogic更正确,Business-Bean-Classes应该都有自己的EJB-Local-Interface。
我猜WL或JBoss会给你一个警告而不是错误。