未找到消息正文编写者
我正在尝试创建一个必须生成 JSON 数据的 JAX-RS 资源。
我正在 Apache TomEE 9.0.0-M7 和 Jakarta Web Profile 9.1 上运行。
在 PrincipalResource
类上调用 getPrincipals
会产生以下错误。
当 getPrincipal
方法返回 List
时,为什么我会收到 java.util.Vector
错误?
请帮忙。
2022 年 3 月 5 日 10:06:57 下午 org.apache.cxf.jaxrs.utils.JAXRSUtils logMessageHandlerProblem 严重:未找到消息正文编写器 对于类 java.util.Vector,ContentType:application/json
获取方法
@Path("/principal")
public class PrincipalResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Principal> getPrincipals() {
AccessControl accessControl = new AccessControl();
return accessControl.findPrincipals();
}
}
主类
public class Principal {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "principalNumber")
private long principalNumber;
@Pattern(regex = Regex.EMAIL, message = "Invlid email address")
@Column(name = "emailAddress")
private String emailAddress;
@Pattern(regex = Regex.FIRST_NAME, message = "Invlid first name")
@Column(name = "firstName")
private String firstName;
@Pattern(regex = Regex.LAST_NAME, message = "Invlid last name")
@Column(name = "lastName")
private String lastName;
@Pattern(regex = Regex.PASSWORD, message = "Invlid password.")
@Column(name = "principalPassword")
private String principalPassword;
@Column(name = "activated")
private boolean activated;
@OneToMany(mappedBy = "principal", cascade = CascadeType.ALL)
@XmlTransient
private List<PrincipalRole> principalRoles;
public Principal() {
}
Maven
<dependencies>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-web-api</artifactId>
<version>9.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>za.co.ezimax</groupId>
<artifactId>common</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
I am trying to create a JAX-RS resource that must produce JSON data.
I am running on Apache TomEE 9.0.0-M7 and Jakarta Web Profile 9.1.
Calling getPrincipals
on the PrincipalResource
class produces the error below.
Why I am getting a java.util.Vector
error when the getPrincipal
method returns a List
?
Please assist.
Mar 05, 2022 10:06:57 PM org.apache.cxf.jaxrs.utils.JAXRSUtils
logMessageHandlerProblem SEVERE: No message body writer has been found
for class java.util.Vector, ContentType: application/json
Get method
@Path("/principal")
public class PrincipalResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Principal> getPrincipals() {
AccessControl accessControl = new AccessControl();
return accessControl.findPrincipals();
}
}
Principal class
public class Principal {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "principalNumber")
private long principalNumber;
@Pattern(regex = Regex.EMAIL, message = "Invlid email address")
@Column(name = "emailAddress")
private String emailAddress;
@Pattern(regex = Regex.FIRST_NAME, message = "Invlid first name")
@Column(name = "firstName")
private String firstName;
@Pattern(regex = Regex.LAST_NAME, message = "Invlid last name")
@Column(name = "lastName")
private String lastName;
@Pattern(regex = Regex.PASSWORD, message = "Invlid password.")
@Column(name = "principalPassword")
private String principalPassword;
@Column(name = "activated")
private boolean activated;
@OneToMany(mappedBy = "principal", cascade = CascadeType.ALL)
@XmlTransient
private List<PrincipalRole> principalRoles;
public Principal() {
}
Maven
<dependencies>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-web-api</artifactId>
<version>9.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>za.co.ezimax</groupId>
<artifactId>common</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

您返回的对象(Vector)不能通过默认的 JAXRS 实现进行序列化。
您需要提供可序列化的 DTO 作为返回值。
The object (Vector) you are returning is not serializable by the default JAXRS implementation.
You need to provide a serializable DTO as the return value.