Я уверен, что это ошибка новичка ...
Итак, у меня есть приложение Java EE 6 с сущностями, фасадами (реализующими уровень постоянства) и сессионными компонентами без сохранения состояния (EJB3) с удаленными интерфейсами (обеспечивающими доступ к сущностям через фасады).
Это работает нормально. С помощью SLSB я могу получать и манипулировать объектами.
Теперь я пытаюсь сделать это из веб-приложения (развернутого на том же Glassfish, определения сущностей + интерфейса из приложения Java EE, импортированные как отдельный jar). У меня есть сервлет, который получает инъекцию экземпляра SLSB. Я получаю его для извлечения сущности, и происходит следующее (я вижу это в журналах):
- создается экземпляр удаленного SLSB, его метод называется
- SLSB создает экземпляр фасада, вызывает метод get
- фасад извлекает экземпляр сущности из БД, возвращает его
- SLSB возвращает экземпляр сущности вызывающей стороне
- вызывающий сервлет получает .. пустой экземпляр сущности !!
Что не так? Это должно работать, верно?
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();
}
}
...
}
Пожалуйста, дайте мне знать, если вы хотите увидеть другой код, и я обновлю сообщение.