JAX-
RS实现自动支持基于可发现的JAXB注释的类的编组/解组,但是由于您的有效载荷声明为
Object,我认为所创建
JAXBContext的
Department类会丢失该类,而何时该进行编组则不知道如何进行。
一个快速而肮脏的解决方法是
XmlSeeAlso在响应类中添加一个注释:
@XmlRootElement@XmlSeeAlso({Department.class})public class Response implements Serializable { ....或一些更复杂的是“丰富”为JAXB的情况下
Response使用类
ContextResolver:
import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;import javax.ws.rs.ext.ContextResolver;import javax.ws.rs.ext.Provider;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;@Provider@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })public class ResponseResolver implements ContextResolver<JAXBContext> { private JAXBContext ctx; public ResponseResolver() { try { this.ctx = JAXBContext.newInstance( Response.class, Department.class ); } catch (JAXBException ex) { throw new RuntimeException(ex); } } public JAXBContext getContext(Class<?> type) { return (type.equals(Response.class) ? ctx : null); }}


