Невозможно получить XML ответ на запрос GET - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь реализовать запрос GET, используя JAX-RS для извлечения сообщений в соответствии с учебником javabrains .

Я включил @XmlRootElement в класс модели. Даже тогда я получаю 500 внутреннюю ошибку сервера, и я не вижу никаких сообщений об ошибках в консоли.

Я получаю вывод для запроса GET в браузере, если я использую MediaType.APPLICATION_ JSON, но не при использовании MediaType.APPLICATION_ XML.

Это ссылка на структуру папок

Ниже приведены классы:

package org.dhivyaudayakumar.itmd566.dhivya.resources;

import java.util.List;

import javax.ws.rs.*;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.dhivyaudayakumar.itmd566.dhivya.model.Message;
import org.dhivyaudayakumar.itmd566.dhivya.service.MessageService;

@Path("/messages")
public class MessageResource {

    MessageService messageService = new MessageService();

    @GET
    @Produces(MediaType.APPLICATION_XML)
    public List<Message> getMessages() {
        return messageService.getAllMessages();
    }
}
package org.dhivyaudayakumar.itmd566.dhivya.service;

import java.util.ArrayList;
import java.util.List;

import org.dhivyaudayakumar.itmd566.dhivya.model.Message;

public class MessageService {

    public List<Message> getAllMessages(){
        Message m1 = new Message(1L, "This is the first message", "Dhivya");
        Message m2 = new Message(2L, "This is the second message", "Dhivya");

        List<Message> messageList = new ArrayList<>();
        messageList.add(m1);
        messageList.add(m2);

        return messageList;
    }
}
package org.dhivyaudayakumar.itmd566.dhivya.model;

import java.util.Date;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Message {

    public long id;
    public String message;
    public Date created;
    public String author;

    public Message() {
    }

    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;
    }
}

У меня есть следующие зависимости в pom. xml:

        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet-core</artifactId>
            <!-- use the following artifactId if you don't need servlet 2.x compatibility -->
            <!-- artifactId>jersey-container-servlet</artifactId -->
        </dependency>
        <dependency>
          <groupId>org.glassfish.jersey.media</groupId>
          <artifactId>jersey-media-jaxb</artifactId>
        </dependency>
        <!--Below dependency for JSON support-->
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-moxy</artifactId>
        </dependency>

В соответствии с руководством не было необходимости включать какую-либо зависимость для вывода xml, но я искал inte rnet и добавил зависимость jaxb, но это не помогло решить проблему. Может кто-нибудь, пожалуйста, помогите мне понять это?

...