Я новичок в Java EE, поэтому мой вопрос может быть очень простым. Я создал следующую веб-службу REST с сеансовым компонентом без сохранения состояния (упрощенно):
@Path("/list/")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Stateless
public class ListResource {
@PersistenceContext(unitName = "unitName")
private EntityManager em;
@GET
@Path("/")
public List<Compound> getCompounds() {
List<Compound> list = tq.getResultList();
if (list.isEmpty()) {
throw new WebApplicationException(Response.status(404).entity("There are no compounds in database.").build());
}
return list;
}
}
Это работает как шарм. Он доступен через URL и возвращает JSON. Проблема в том, что у меня есть другая часть программы, написанная на простой Java, которая должна использовать этот сеансовый компонент в качестве некоторой модели для получения всех соединений.
Проблема в том, что когда я инициализирую этот компонент сеанса где-то, он находится вне контекста персистентности и поэтому не знает, что EntityManager может получить доступ к базе данных. Я считаю.
Я не знаю, что делать. Могу ли я инициализировать класс ListResource в удаленной части кода и заставить работать внедрение зависимостей EntityManager? Или каким-то образом получить контекст сохранения, а затем инициализировать этот сеансовый компонент?
Я надеюсь, что это имеет смысл. Его сложная проблема для меня, чтобы описать.