Java Jersey JAX-RS资源的可能重载列表

Java Jersey JAX-RS资源的可能重载列表,java,jersey,jax-rs,jersey-2.0,Java,Jersey,Jax Rs,Jersey 2.0,我正在使用Jersey实现一个JAX-RS资源。我已经看到了很多关于堆栈溢出、各种博客和应用程序的不同示例 我想知道对于给定的资源处理程序,不同的重载可以是什么。是否有一个记录这些信息的单一来源 例如,以下代码处理HTTP POST请求。请求主体被捕获为一个多值映射 @POST public Response httpPostRequest(MultivaluedMap<String, String> body) { ... } 还有其他重载。它们有多少个以及记录在哪里?这

我正在使用Jersey实现一个JAX-RS资源。我已经看到了很多关于堆栈溢出、各种博客和应用程序的不同示例

我想知道对于给定的资源处理程序,不同的重载可以是什么。是否有一个记录这些信息的单一来源

例如,以下代码处理HTTP POST请求。请求主体被捕获为一个
多值映射

@POST
public Response httpPostRequest(MultivaluedMap<String, String> body)
{
    ...
}

还有其他重载。它们有多少个以及记录在哪里?

这只是一个普通的Java方法,它有一个或多个与之关联的注释。方法的签名没有Jersey对其施加的特定约束

话虽如此,您仍需要确保将各种注释(例如,
@产生
@消耗
@PathParam
@QueryParam
)应用于Jersey知道如何映射的数据类型。例如,Jersey在将
@PathParam
映射到
String
long
时没有问题。Jersey还可以处理具有JAXB注释的Java类,因此您的方法签名可以包括一个JAXB类型,该类型与
@Consumes(MediaType.APPLICATION_XML)
组合,Jersey将请求内容从XML文档转换为JAXB Java类

例如:

@GET
@Produces(MediaType.APPLICATION_XML)
@Path("somepath")
public Foos getFoosByQuery(@PathParam("businessName") String businessName,
        @PathParam("businessUnitName") String businessUnitName, @PathParam("fileType") String fileType,
        @QueryParam("from") String fromString, @QueryParam("to") String toString,
        @DefaultValue("10") @QueryParam("interval") int intervalMinutes,
        @DefaultValue("1000") @QueryParam("limit") int limit,
        @DefaultValue("false") @QueryParam("errors") boolean errors) {
在这里,我们看到有许多参数(包括类型
String
int
boolean
)和返回类型,即JAXB注释的POJO。Jersey从路径中提取
@PathParam
值,从查询字符串中提取
@QueryParam
值,并将返回值转换为XML文档,并将其作为响应的内容

我还将注意到,方法的名称可以是我们想要的任何名称,因此“重载”的概念与Jersey正交。通常的Java重载规则适用

从这个例子中可以明显看出,您不能列举所有可能用于Jersey的“重载”


关于Jersey可以执行的所有可能的类型映射,可能有一个不同的问题更符合您的要求。

我不明白签名如何可以没有约束。
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("somepath")
public Foos getFoosByQuery(@PathParam("businessName") String businessName,
        @PathParam("businessUnitName") String businessUnitName, @PathParam("fileType") String fileType,
        @QueryParam("from") String fromString, @QueryParam("to") String toString,
        @DefaultValue("10") @QueryParam("interval") int intervalMinutes,
        @DefaultValue("1000") @QueryParam("limit") int limit,
        @DefaultValue("false") @QueryParam("errors") boolean errors) {