Я пытаюсь реализовать привязку HK2 в Джерси в контексте сервлета/кота.
Я делаю это в сервлете, который расширяет org.glassfish.jersey.servlet.ServletContainer :
@Override
public void init(ServletConfig config) throws ServletException
{
super.init(config);
// BinderInjection extends org.glassfish.hk2.utilities.binding.AbstractBinder
getConfiguration().register(new BinderInjection());
}
... но я получаю:
java.lang.IllegalStateException: The resource configuration is not modifiable in this context.
at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:270)
at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:218)
at org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:448)
at A_Servlet.init(RestServlet.java:45)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1190)
Итак, как я могу сделать свою собственную привязку HK2?
Почему этот вопрос? (изменить)
Это для EntityManager и JPA в Джерси.
С Netbeans, если я создаю AbstractFacade, он помещает
@PersistenceContext(unitName = "myunit")
private EntityManager em;
... а также :
@Override
protected EntityManager getEntityManager()
{
return em;
}
Но когда я вызываю службу, em равно нулю. Итак, я полагаю, что @PersistenceContext не работает?
Если я использую решение Учебное пособие: поместите JPA в свое веб-приложение (tomcat, EclipseLink) и предоставьте вывод Rest JSON все работает как шарм, но мне не нравится использовать статическую переменную private static EntityManagerFactory emf ; для менеджера сущностей.
Спасибо.