如何在 JAX-RS 中修复 javax.servlet.ServletException: java.lang.NullPointerException?

问题描述 投票:0回答:1

我试图使用@@XmlRootElement注解将POJO映射到一个XML元素,但当我试图访问我的端点时,我一直得到一个javax.servlet.ServletException: java.lang.NullPointerException。

Message.java

@XmlRootElement
public class Message {
    private long id;
    private String message;
    private Date created;
    private String author;

    public Message(long id, String message, String author) {
        this.id = id;
        this.message = message;
        this.author = author;
        this.created = new Date();
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
}

MessageService.java

public class MessageService {

    public List<Message> getAllMessages(){
        Message m1 = new Message(1L, "Hello World!", "Amine");
        Message m2 = new Message(2L, "Hi World!", "Amine");
        Message m3 = new Message(3L, "Hey World!", "Amine");
        List<Message> messages = new ArrayList<Message>();
        messages.add(m1);
        messages.add(m2);
        messages.add(m3);
        return messages;
    }
}

MessageResource.java

@Path("messages")
public class MessageResource {
    MessageService messageService = new MessageService();

    @GET
    @Produces(MediaType.APPLICATION_XML)
    public List<Message> getMessages() {
        return messageService.getAllMessages();
    }

}

輸出:我試圖使用@@XmlRootElement注解將一個POJO映射到一個XML元素上,但我一直得到javax.servlet.ServletException:java.lang.NullPoin。enter image description here

java jersey jax-rs
1个回答
0
投票

似乎Jersey有问题初始化MessageService messageService = new MessageService()。

尝试一些不同的方法来创建这个对象,你可以尝试自动接线或者把上面的行移到getMessages()方法里面。

但我建议你在调试模式下启动你的服务器,看看到底是什么东西变成了null。

© www.soinside.com 2019 - 2024. All rights reserved.