配置多个jaxrs的jaxrs:具有不同bean的服务器标签
问题描述:
此问题与JAX-RS配置有关。配置多个jaxrs的jaxrs:具有不同bean的服务器标签
我为单个类配置了JAX-RS。配置工作正常。
@Path(/bean1/)
@Produces("application/xml")
public class class1 {
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
@Path(/m1)
public String method1(JAXBElement<String> request) {
}
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
@Path(/m2)
public String method2(JAXBElement<String> request) {
}
}
下面是JAXRS:服务器标签
<jaxrs:server id="bean1" address="/">
<jaxrs:serviceBeans>
<ref bean="class1" />
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<entry key="xml" value="application/xml" />
</jaxrs:extensionMappings>
</jaxrs:server>
我可以通过Apache Jersey客户端使用URL “/ bean1/M1”
现在打电话,我想配置其他类与JAX-RS。因此,我添加配置如下
@Path(/bean2/)
@Produces("application/xml")
public class class2 {
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
@Path(/m3)
public String method3(JAXBElement<String> request) {
}
}
我添加了另一个jaxrs:服务器标记和指定的地址。有效配置是
<jaxrs:server id="bean1" address="/bean1">
<jaxrs:serviceBeans>
<ref bean="class1" />
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<entry key="xml" value="application/xml" />
</jaxrs:extensionMappings>
</jaxrs:server>
<jaxrs:server id="bean2" address="/bean2">
<jaxrs:serviceBeans>
<ref bean="class2" />
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<entry key="xml" value="application/xml" />
</jaxrs:extensionMappings>
</jaxrs:server>
我再次尝试使用URL“/ bean1/m1”调用Web服务。
但是,我收到一个错误没有发现根资源匹配请求路径/ m1。
请求帮助。
答
看你的配置,你现在有一个映射到一个映射:
/bean1/bean1/m1
/bean2/bean2/m3
你可能想要做这样的事情:
<jaxrs:server id="server" address="/">
<jaxrs:serviceBeans>
<ref bean="class1" />
<ref bean="class2" />
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<entry key="xml" value="application/xml" />
</jaxrs:extensionMappings>
</jaxrs:server>
你可以只定义2个servicebeans为同一个服务器如果你想。这应该给你你想要的。
Apache Jersey?你不是指Apache CXF或Sun/Oracle Jersey吗? – toniedzwiedz 2012-07-30 16:45:04