未找到消息正文编写者

发布于 01-11 22:21 字数 2734 浏览 6 评论 0原文

我正在尝试创建一个必须生成 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝咒2025-01-18 22:21:12

您返回的对象(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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文