我在尝试将无状态EJB注入到应用程序客户端项目时遇到了一些问题。 App Client和EJB都在同一个EAR中。使用JNDI,我能够检索EJB的实例,但我不知道如何使用@EJB注释来完成它。我尝试过使用@EJB(name =“something”),@ EJB(mappedName =“something”),但我得到的只是null。这是我的代码:
@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");
关于如何做到这一点的任何想法?
答案 0 :(得分:1)
您可以这样做:
@EJB
private TimerEjbTestService myBean;
通过这种方式,容器会注入bean。
此外,由于它位于同一个耳中(因此由相同的JVM运行),因此界面的注释应为@Local
而不是@Remote
。