1

此问题与 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) {
    }
}

下面是 jaxrs:server 标签

<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:server 标签和指定的地址。有效配置是

<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 的根资源。

请求帮助。

4

1 回答 1

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 个 servicebean。那应该给你你想要的。

于 2012-07-30T22:02:33.393 回答