2012-07-30 42 views
1

此问题与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。

请求帮助。

+0

Apache Jersey?你不是指Apache CXF或Sun/Oracle Jersey吗? – toniedzwiedz 2012-07-30 16:45:04

回答

8

看你的配置,你现在有一个映射到一个映射:

/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为同一个服务器如果你想。这应该给你你想要的。