簡體   English   中英

獲取內部服務器錯誤 - @XmlRootElement

[英]Getting internal server error - @XmlRootElement

我有這個Model類:

package org.myapp.model;
import java.util.Date;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement(name="Message")
@XmlAccessorType(XmlAccessType.FIELD)
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();
    }
    @XmlElement
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    @XmlElement
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }
    @XmlElement
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }


}

服務類:

package org.myapp.services;


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

import org.myapp.model.Message;



public class MessageService {


    public List<Message> getAllMessages(){
        Message msg1 = new Message(1L,"How are you?", "natalie");
        Message msg2 = new Message(2L,"How are you?", "amir");
        List<Message> msglist = new ArrayList<Message>();
        msglist.add(msg1);
        msglist.add(msg2);
        return msglist;
    }

}

資源類:

package org.myapp.resource;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.myapp.model.Message;
import org.myapp.services.MessageService;

@Path("messageresource")
public class MessageResource {

    MessageService messageService = new MessageService();

    @GET
    @Produces(MediaType.APPLICATION_XML)
    public List<Message> getMessage() {
        return   messageService.getAllMessages();  //"app chal rhi hai!";
    }

    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Path("/{messageId}")
    public String getMessageID(@PathParam("messageId") String messageId) {
        Message message = new Message(1L,"How are you?", "natalie");
        return message.getMessage()+", "+messageId;
    }
}

我試圖以XML格式打印Service(MessageService)類中的數據。 我認為,錯誤是由於此類'方法(返回類型List<Message> )的返回值和Model(Message)類頂部的標記@XMLRootElement不一致引起的。 我嘗試了不同的MediaType屬性,但沒有任何幫助。

當我訪問此路徑時: localhost:8080/messengerapp/webapi/messageresource
我收到此錯誤 - Internal Server Error

我剛開始學習編寫Web服務。我嘗試過不同的方法來解決這個問題,但沒有什么能幫助我。 請幫助我理解並解決這個問題。

試試這個,

注釋xml的根元素

@XmlRootElement (name="Messages")
public class MessageService implements Serializable{

    private List<Message> msglist = new ArrayList<Message>();

    public List<Message> getAllMessages(){
        Message msg1 = new Message(1L,"How are you?", "natalie");
        Message msg2 = new Message(2L,"How are you?", "amir");
        msglist.add(msg1);
        msglist.add(msg2);
        return msglist;
    }

    public void setAllMessages(List<Message> msglist){
        this.msglist = msglist;
    }

}

xml的結構

<Messages>  <!--  root element of xml  -->

    <Message>
        ...
    </Message>

    <Message>
        ...
    </Message>

</Messages>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM