我可以用Jersey(和MOXy)发送一系列对象吗?

时间:2014-07-12 18:19:44

标签: java google-app-engine jaxb jersey moxy

我想将Match数组发送到服务器。这是Match.java:

@XmlRootElement
public class Match {
public enum State {
    Updated, Synced
};

@XmlElement
public int matchId;

@XmlElement
public int timeFrom;

@XmlElement
public int timeTo;

@XmlElement
public MatchConfig config; // can be null

public State state;

public Match() {
}
}

然而,当我发送一个数组时,它会告诉我:

警告:/ api / match java.lang.ClassCastException:test.rest.Match无法强制转换为javax.xml.bi nd.JAXBElement

为什么会这样?

我的Servlet方法看起来像这样

@POST
@Path(MATCH_PATH)
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Match[] syncMatches(Match[] matches) {
    System.out.println("received matches!");
    return new Match[]{new Match()};
}

顺便说一句,将数组从服务器返回到客户端是否有效,并且还向服务器发送单个Match对象。 典型的服务器json输出为:[{"matchId":12,"timeFrom":23,"timeTo":0}]。 我的客户端发送的内容如下所示:[{"matchId":-1,"timeTo":-1,"timeFrom":265}]

1 个答案:

答案 0 :(得分:0)

这是MOXy的MOXyJsonProvider类中存在的问题,已在EclipseLink 2.5.1中修复。

链接到已解决的问题

下载EclipseLink的链接