我在尝试将无状态 EJB 注入(inject)应用程序客户端项目时遇到一些问题。应用程序客户端和 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");
关于如何做到这一点有什么想法吗?
最佳答案
你可以这样做:
@EJB
private TimerEjbTestService myBean;
这样容器就注入(inject)了bean。
此外,由于它位于同一个耳朵中(因此由同一个 JVM 运行),接口(interface)的注释应该是 @Local
而不是 @Remote
。
关于java - 在 WebLogic Server v10.3 中注入(inject) EJB 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12496611/