Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa HK2-3注射液_Jpa_Cdi_Jersey 2.0_Ejb 3.1_Jta - Fatal编程技术网

Jpa HK2-3注射液

Jpa HK2-3注射液,jpa,cdi,jersey-2.0,ejb-3.1,jta,Jpa,Cdi,Jersey 2.0,Ejb 3.1,Jta,我遵循22.1。实现自定义注入提供程序段落 我能够按照本文描述的步骤开发自己的可注入自定义注释: 因此,我使用以下部署说明绑定我的injectionresolver: <servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-

我遵循22.1。实现自定义注入提供程序段落

我能够按照本文描述的步骤开发自己的可注入自定义注释:

因此,我使用以下部署说明绑定我的injectionresolver:

<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param> 
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.klopotek.klas.auth.injection.PrincipalConfig</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
@Context和@MyAnnot都可以正常工作,因为@Context注释是在Jersey容器中处理的

现在我想将JPA和JTA用于我的持久层。 我的最终代码应该如下所示:

 @Path("modelORA")
public class ModelRetrieverORA {

   @PersistenceContext (unitname="myName")
   EntityManager manager;

   @Resource
   UserTransaction transaction;

   @Context
   SecurityContext securityContext;

   @Context
   private UriInfo uriInfo;

   @MyAnnot    
   private Myinjectable Principal;
但当然,manager和transaction都是空的。注射没有发生

我认为问题与Jersey2使用的HK2注入引擎(我需要它是因为我的自定义注释)或我的应用服务器中的CDI引擎(tomcat或wildfly 9)有关。
那么,我该如何向WELD或任何CDI引擎注入事务和JPA管理器呢?

尝试在ws类开头的@Path(“modelORA”)注释上方添加@Stateless注释。感谢您的回答。。。我刚才做了,但没有任何改变…@Stateless(name=“RestServiceModelORA”)@TransactionManagement(TransactionManagementType.BEAN)。。。仍然为空值您在哪个服务器上运行应用程序?我在Wildfly 9上运行,最后一次使用它。。。你可以阅读。如果您通过“HK2 Jersey entitymanager injection”进行搜索,则在同一方向的互联网上会有更多资源。
 @Path("modelORA")
public class ModelRetrieverORA {

   @PersistenceContext (unitname="myName")
   EntityManager manager;

   @Resource
   UserTransaction transaction;

   @Context
   SecurityContext securityContext;

   @Context
   private UriInfo uriInfo;

   @MyAnnot    
   private Myinjectable Principal;