为什么找不到EJB的JNDI名称



我有一个 ear 文件,结构显示 ejb s内部:

project-ear
        |-----project-business.jar
                        |-----SupervisorProcesserBean(class) (@Stateless)
                        |-----SupervisorProcesserBeanLocal(interface) (@Local)
        |-----project-dao.jar
                        |-----SupervisorDAOImpl(class) (@Stateless)
                        |-----SupervisorDAOLocal(interface) (@Local)

这是我的 sustersordaoimpl bean:

@Stateless
public class SupervisorDAOImpl implements SupervisorDAOLocal {
    @Override
    public void doSomething() {
        //do something
    }
}

使用 sustersordaolocal 接口:

@Local
public interface SupervisorDAOLocal {
    public void doSomething();
}

和我的 sustissorProcesserbean bean:

@Stateless
public class SupervisorProcesserBean implements SupervisorProcesserBeanLocal {
    @EJB
    private SupervisorDAOLocal supervisorDao;
    ....
}

使用 sustemorProcesserBeanLocal 接口:

@Local
public interface SupervisorProcesserBeanLocal {
    ....
}

您可以看到,我想注入 subsevisordaolocal sustemorPropesserbean 。当我想将其部署到 weblogic 时,我会得到此错误:

Error resolving ejb-ref "com.viktor.business.SupervisorProcesserBean/supervisorDAO" 
from module "project-war-1.0.0-SNAPSHOT.war" of application "project-ear-1.0.0-SNAPSHOT". 
The ejb-ref does not have an ejb-link and the JNDI name of the target Bean has not been specified.

怎么可能?两种豆都有本地接口。

jndi名称是使用远程接口的名称构建的,您似乎没有一个名称。将@local注释更改为@Remote,然后重试。

最新更新