2013-05-03 45 views
0

我有两个服务组件一个Spring配置CXF供电JAXRS服务:配置JAXRS做架构验证只为某些服务组件

<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" /> 

遗憾的是,只有两个服务组件中的一个覆盖通过XSD文件,以便另一个在模式验证时失败。

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

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

回答

1

架构验证设置在JAX-RS的服务水平,让你想要什么直接(不添加到架构),你不能这样做,但你可以在不同的路径相同的Web应用程序的多个实例<jaxrs:server>。这应该让你设置你想要的而不是太麻烦。 (这是CXF更复杂的配置方法自带的地方。)

+0

看起来可行。但是,我需要更改其中一项服务的路径(URL)前缀,对吧? – Thilo 2013-05-07 06:30:09

+0

“需要改变路径”:不需要。两个jaxrsServers可以有重叠的路径(例如beanA默认为'/',beanB为类注释中的前一个,比如'/ serviceB'),你可以通过将它们从路径注释中去除班上。所以外部URL可以保持不变。 – Thilo 2013-05-07 09:31:15

+0

好吧,我在一个应用程序中有四个单独的“服务器”(在我的情况下,因为我需要不同的类型映射),所以这种功能是超级有用的。 – 2013-05-12 08:12:22