泽西网络服务不是处理XML,而是JSON



我目前正在处理泽西岛/冬眠网络服务(在tomcat 9容器中(,该服务应该能够消费并产生JSON(Application/json(和XML(Application/XML(也是如此。它支持获取和张贴以消费这些类型。DELETE得到了支持并有效的工作,并为JSON提供并发布。但是,一旦我尝试使用XML内容类型相同,我会收到500个内部服务器错误。

结构如下:(在下面检查代码(歌曲列表(歌曲列表班(有歌曲列表和一个所有者(用户类(。

您可以在XML中获得/(mywsname(/songs/songs/songe/{id}的歌曲,也没有任何麻烦。

我认为这里的问题是XML注释,因为对于JSON,一切都像现在一样工作。我尝试添加@xmlelement和@accessortype(field(。这些都没有帮助。此外,一切都适用于/(mywsname(/songes/{id}的歌曲。

    @Entity
    @Table(name="songlists")
    @XmlRootElement(name = "songList")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Songlist {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonProperty(value = "id")
    @XmlElement
    private int id;
    @JsonProperty("name")
    @XmlElement
    private String name;
    @ManyToOne
    @JsonProperty("owner")
    @JoinColumn(name = "owner_id")
    @XmlElement
    private User owner = null;
    @JsonProperty("isPrivate")
    @XmlElement
    private boolean isPrivate;

    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "songlists_songs", joinColumns = {    @JoinColumn(name = "list_id") }, inverseJoinColumns = {
            @JoinColumn(name = "song_id") })
    @XmlElementWrapper(name = "songs")
    @XmlElement(name = "song")
    @JsonProperty(value = "songs")
    private List<Song> songs = null;

    //JAXB no arg constructor 
    public Songlist() {
    }
    // Here: other constructors
    // and Getters and Setters for all fields 

    }```

@Entity
@XmlRootElement(name = "song")
@XmlAccessorType(XmlAccessType.FIELD)
@Table(name="songs")
public class Song {
@Id
@Column(name="song_id")
@JsonProperty("id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@XmlAttribute (name = "id")
private Integer id;
@NotNull
@JsonProperty("title")
@XmlAttribute (name = "title")
private String title;
@JsonProperty("artist")
@XmlAttribute (name = "artist")
private String artist;

@JsonProperty("album")
@XmlAttribute (name = "album")
private String album;

@JsonProperty("released")
@XmlAttribute (name = "released")
private Integer released;
@JsonIgnore
@XmlTransient
@ManyToMany(fetch = FetchType.EAGER, mappedBy="songs")
private List<Songlist> songlists;
//JAXB no arg constructor
public Song() {
}
// here: some other constructors
// and Getters and Setters for all fields

}````

不幸的是,没有为此的日志消息。从我的研究中,这显然是JAXB问题。

解决方案是在用户类中制作songfest字段(我没有发布,因为我没想到这是错误源(xml瞬态歌曲列表和歌曲列表将引用用户。显然无尽的循环。

相关内容

最新更新