通过jax-rs返回XML对象

时间:2013-04-24 13:13:19

标签: rest jaxb jax-rs

我有一个JAX-RS Web服务,如下所示:

@Path("/status")
@Produces("application/xml")
@GET
public PrecisionStatus getPrecisionValue(){
    PrecisionStatus status = ...

    return status;
}

最初,结果是:

<PrecisionStatus sensorID="TemperatureSensor5"><condition>OK</condition><fieldValue>60.0</fieldValue></PrecisionStatus>

看起来很好,但我想声明描述此文档的xsd文件。通过使用JAXB编组功能,我能够(在记录器/控制台中)生成所需的输出:

<PrecisionStatus sensorID="TemperatureSensor5" xsi:noNamespaceSchemaLocation="http://mysite.com/myapp/xsd0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <condition>OK</condition>
    <fieldValue>60.0</fieldValue>
</PrecisionStatus>

(这是通过解组对象来确认的。)

但是,如果我返回此对象return status;,浏览器会收到以前的xml文档,即没有引用xsd的文档。

我很确定该对象具有正确的形式,但在最终结果中有一些对xsd的引用被删除。任何线索?

1 个答案:

答案 0 :(得分:2)

您可以创建一个JAX-RS MessageBodyWriter来访问Marshaller以设置JAXB_NO_NAMESPACE_SCHEMA_LOCATION属性。有关完整示例,请参阅: