CXF JSON模式验证

时间:2014-04-28 21:00:34

标签: json web-services cxf

我正在编写支持XML和JSON格式的RESTFul webservices。我需要在webservices中添加模式验证。我的bean是使用JAX-B自动生成的。正如CXF网站Schema validation所建议的那样,我使用org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider作为JSON提供程序,org.apache.cxf.jaxrs.provider.JAXBElementProvider作为JAX-B提供程序。请求和响应工作正常,但现在我想添加模式验证。

上面的CXF链接上的示例代码对我来说不适用于JSON模式验证(它用于XML模式验证)。他们为org.apache.cxf.jaxrs.provider.json.JSONProvider(在“模式验证”部分下)显示了它,这对我不起作用,因为我的bean是JAX-B生成的,所以我使用的是JacksonJaxbJsonProvider

这个问题有解决办法吗?有人可以建议我尝试一些方法吗?

以下是XML配置:

             

<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>      

<bean id="schemaHolder" class="org.apache.cxf.jaxrs.utils.schemas.SchemaHandler">
    <property name="schemas" ref="theSchemas"/>
</bean>

<util:list id="theSchemas">
  <value>classpath:/WEB-INF/classes/po.xsd</value>
</util:list>

<!-- Person REST Service Configurations -->
<bean id="personRESTServiceImpl" class="com.abc.webservices.service.rest.PersonRESTService" />
<jaxrs:server id="personRESTService" address="/person-rest-service">
    <jaxrs:serviceBeans>
        <ref bean="personRESTServiceImpl" />
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <ref bean="jaxbProvider" />
        <ref bean='jsonProvider' />
    </jaxrs:providers>
</jaxrs:server>

1 个答案:

答案 0 :(得分:0)

您的类路径错误,在Web应用程序类路径中是WEB-INF / classes

因此您可以使用以下配置

<jaxrs:schemaLocations>
                <jaxrs:schemaLocation>classpath:po.xsd</jaxrs:schemaLocation>
</jaxrs:schemaLocations>

如果你在classes目录中有xsd目录,那么classpath:xsd/po.xsd