Spring 配置JAXR仅对某些服务bean进行模式验证

Spring 配置JAXR仅对某些服务bean进行模式验证,spring,cxf,jax-rs,xsd-validation,Spring,Cxf,Jax Rs,Xsd Validation,我有一个配置了Spring的CXF驱动的JAX-RS服务,其中包含两个服务bean: <jaxrs:server id="wsServices"> <jaxrs:serviceBeans> <ref bean="a"/> <ref bean="b"/> </jaxrs:serviceBeans> <jaxrs:schemaLocations> <ja

我有一个配置了Spring的CXF驱动的JAX-RS服务,其中包含两个服务bean:

 <jaxrs:server id="wsServices">
    <jaxrs:serviceBeans>
       <ref bean="a"/>
       <ref bean="b"/>
    </jaxrs:serviceBeans>
    <jaxrs:schemaLocations>
        <jaxrs:schemaLocation>
           classpath:/schema/webservices.xsd
        </jaxrs:schemaLocation>
    </jaxrs:schemaLocations>
 </jaxrs:server>

<bean id="a" class="AServiceImpl"/> 
<bean id="b" class="BServiceImpl" />

类路径:/schema/webservices.xsd
不幸的是,XSD文件只覆盖了两个服务bean中的一个,因此另一个在模式验证时失败

我知道如何完全关闭模式验证,然后这两个服务都可以正常工作(但我宁愿在可以使用的地方继续进行验证)


如何将配置更改为仅对bean
a
使用模式验证,而不对
b
使用模式验证?

模式验证是在JAX-RS服务级别设置的,因此您不能直接执行您想要的操作(不添加到模式),但您可以在同一webapp中使用不同路径的多个
实例。这样你就可以不费吹灰之力地设置你想要的东西。(这就是CXF更复杂的配置方法的由来。)

这看起来是可行的。但是,我需要更改其中一个服务的路径(URL)前缀,对吗?“需要更改路径”:不需要。这两个JAXRServer可以有重叠的路径(例如,beanA是默认的“/”,beanB是类注释中的前一个路径,例如“/serviceB”),您可以通过从类上的路径注释中剥离它们来补偿额外的段。所以外部URL可以保持不变。我在一个应用程序中有四个独立的“服务器”(在我的例子中,因为我需要不同类型的映射),所以这种功能非常有用。