jaxrs配置多个jaxrs:具有不同bean的服务器标签

Nik*_*kil 1 jax-rs

此问题与JAX-RS配置有关.

我为单个类配置了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) {
    }
}
Run Code Online (Sandbox Code Playgroud)

下面是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>
Run Code Online (Sandbox Code Playgroud)

我可以通过URL"/ bean1/m1"通过Apache Jersey客户端调用


现在,我想用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) {
    }
}
Run Code Online (Sandbox Code Playgroud)

我添加了另一个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>
Run Code Online (Sandbox Code Playgroud)

我再次尝试使用URL"/ bean1/m1"调用Web服务.

但是,我收到错误没有找到根资源匹配请求路径/ m1.

请求帮助.

Jer*_*oen 8

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

/bean1/bean1/m1

/bean2/bean2/m3
Run Code Online (Sandbox Code Playgroud)

你可能想做这样的事情:

<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>
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以为同一服务器定义2个服务绑定.这应该给你你想要的.