gpt4 book ai didi

jakarta-ee - 注释验证异常 (com.ibm.wsspi.amm.validate.ValidationException)

转载 作者:行者123 更新时间:2023-12-03 11:26:48 25 4
gpt4 key购买 nike

当我尝试在服务器上部署我的应用程序时,我在 IBM Websphere Application Server 8.5 上遇到了以下异常。我在我的应用程序中使用 WS 8.5、EJB 3.1、Java EE 6。

[11/1/12 11:06:47:208 PKT] 0000005d annotations   E   CWWAM0003E: An exception occurred while validating an annotation: com.ibm.wsspi.amm.validate.ValidationException: CWWAM2302E: The class com.xxx.yyy.services.UsersServiceBean is annotated with an invalid @PersistenceContext declaration; no name is specified.
com.ibm.wsspi.amm.validate.ValidationException: CWWAM2302E: The class com.xxx.yyy.services.UsersServiceBean is annotated with an invalid @PersistenceContext declaration; no name is specified.
at com.ibm.ws.amm.validate.persistence.PersistenceContextValidator.validateClassAnnotation(PersistenceContextValidator.java:86)

下面是我的 Java 代码。

@PersistenceContext(unitName="myUnit")
@Stateless(name="UsersService")
public class UsersServiceBean implements UsersService {...}

最佳答案

简而言之,当在一个类上声明@PersistenceUnit时,您必须添加一个name="...",您可以使用它来查找 EntityManagerFactorynew InitialContext("java:...")。或者,您可以在类中声明一个 @PersistenceUnit(...) EntityManagerFactory emf; 字段并省略名称。

所有ref注解与@Resource基本相同。根据公共(public)注释规范:

The name element is the JNDI name of the resource. When the Resource annotation is applied on a field, the default value of the name element is the field name qualified by the class name. When applied on a method, the default is the JavaBeans property name corresponding to the method qualified by the class name. When applied on a class, there is no default and the name MUST be specified.

最后一句话是相关的,它是有道理的:使用 @PersistenceUnit(以及所有其他类似 @Resource 的注释)有两个效果:

  1. 如果您在字段或方法上声明注释,则容器将在创建实例时自动注入(inject)。
  2. 引用使用其名称插入到 java:comp 命名空间中。如果您在字段或方法上声明注解,则默认名称为 java:comp/env/com.example.ClassName/targetName

如果您在类上声明注释,则 (1) 没有注入(inject),并且 (2) 没有默认名称,因此无法绑定(bind)到 java:comp/env。在那种情况下,注释声明将毫无意义,因此它是一个错误。

关于jakarta-ee - 注释验证异常 (com.ibm.wsspi.amm.validate.ValidationException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13189881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com