0

我在尝试将无状态 EJB 注入应用程序客户端项目时遇到了一些问题。App Client 和 EJB 都在同一个 EAR 中。使用 JNDI,我能够检索 EJB 的一个实例,但我不确定我应该如何使用 @EJB 注释来完成它。我试过使用@EJB(name="something")、@EJB(mappedName="something"),但我得到的只是一个空值。这是我的代码:

@Remote
public interface TimerEjbTestService {
    public void testMethod();
}

@Stateless(mappedName="TimerEjbTestService")
public class TimerEjbTestBean implements TimerEjbTestService{

    public void testMethod() {
        System.out.println("Inside EJB.");
    }
}

使用 JNDI,我可以按如下方式获取实例:

Context ctx = new InitialContext();
TimerEjbTestService timerEjbTestService = (TimerEjbTestService) ctx.lookup("TimerEjbTestService#myejb.timerejbtestservice.services.TimerEjbTestService");

关于如何做到这一点的任何想法?

4

1 回答 1

1

你可以这样做:

@EJB
private TimerEjbTestService myBean;

通过这种方式,容器注入 bean。

此外,由于它在同一个耳朵中(因此由同一个 JVM 运行),接口的注释@Local不应该是@Remote.

于 2012-09-19T14:22:45.977 回答