我正在编写支持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>
答案 0 :(得分:0)
您的类路径错误,在Web应用程序类路径中是WEB-INF / classes
因此您可以使用以下配置
<jaxrs:schemaLocations>
<jaxrs:schemaLocation>classpath:po.xsd</jaxrs:schemaLocation>
</jaxrs:schemaLocations>
如果你在classes目录中有xsd目录,那么classpath:xsd/po.xsd