我相信这是一个初学者的错误…
因此,我有一个Java EE 6应用程序,它具有实体、外观(实现持久层)和无状态会话bean(EJB3),具有远程接口(通过外观提供对实体的访问)。
这个很好用。通过SLSB,我可以检索和操作实体。
现在,我尝试从Web应用程序(部署在同一个GalasFISH,实体+来自JavaEE应用程序的接口定义作为单独的JAR导入)中执行此操作。我有一个servlet,它接收注入的slsb实例。我让它检索一个实体,然后会发生以下情况(我可以在日志中看到):
-
远程SLSB被实例化,其方法调用
-
slsb实例化facade,调用“get”方法
-
facade从db中检索实体的实例,并返回该实例
-
SLSB将实体的实例返回给调用方
-
调用servlet接收..安
空实例
实体的!!
怎么了?这应该管用,对吧?
MyServlet:
public class MyServlet extends HttpServlet {
@EJB
private CampaignControllerRemote campaignController; // remote SLSB
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
try {
Campaign c = campaignController.getCampaign(5L); // id of an existing campaign
out.println("Got "+ c.getSomeString()); // is null !!
} finally {
out.close();
}
}
...
}
如果你想看其他代码,请告诉我,我会更新帖子。