我有以下@Singleton
ejb:
@Singleton
public class RunBean {
private int id = new Random().nextInt();
public void printID() {
System.out.println("ID = " + id);
}
}
@Singleton
public class ParentBean {
@Inject
private RunBean runBean;
public void start() {
runBean.printID();
}
}
我在下面的web servlet中@Inject
-ing它们:
public class Servlet extends HttpServlet {
@Inject
private RunBean runBean;
@Inject
private ParentBean parentBean;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
runBean.printID(); // out: ID = 69743
parentBean.start(); // out: ID = 193
}
}
我希望看到打印相同的ID。为什么它们不同?
您应该只在JavaEE 7或更新的服务器上@Inject
ejb(例如您的@Singleton
bean)。
在Java EE6环境中必须使用@EJB