Я пытаюсь реализовать веб-службу RESTful с помощью JAX-RS. Я использую Jersy MOXY 2.16 в качестве провайдера JSON. Ниже приведены примеры DTO, которые я использую.
@XmlSeeAlso(value = { B.class, C.class })
public interface A extends Serializable {
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder={"id", "name"})
public class B implements A{
@XmlAttribute
private int id;
@NotEmpty
@NotNull
private String name;
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder={"id", "name"})
public class C implements A{
@XmlAttribute
private int id;
@NotNull
@NotEmpty
private String name;
}
Я не создавал никаких классов Provider и не применял к нему какие-либо пользовательские конфигурации. Теперь, если я попытаюсь отправить запрос POST с телом JSON реализованных классов, то есть B или C, он будет успешно десериализован в соответствующие DTO.
@Path("/b")
public class ResourceB{
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response add(@Valid B b) throws Exception {
}
Но если я попробую использовать интерфейс A как запрос POST параметр метода и отправьте B или C class JSON body, я получаю 500 internal server error
без сообщения об ошибке.
@Path("/b")
public class ResourceB{
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response add(@Valid A a) throws Exception {
}
Хотел бы услышать решение или предложение по этому поводу.