从URL获取对Jersey REST资源方法的引用
我正在做一些性能测试,我希望能够在不通过网络的情况下调用资源方法。我已经有了一个生成URL的框架,我希望能够重用它 例如,给定URL:www.example.com:8080/resource/method,我想获取它调用的资源方法的引用,这样我就可以运行它而无需发出网络级HTTP请求。也就是说,在下面的示例中,我想使用URL“www.frimastudio.com:8080/time”获取对getServerTime()方法的引用,然后我可以直接调用该方法从URL获取对Jersey REST资源方法的引用,rest,jersey,Rest,Jersey,我正在做一些性能测试,我希望能够在不通过网络的情况下调用资源方法。我已经有了一个生成URL的框架,我希望能够重用它 例如,给定URL:www.example.com:8080/resource/method,我想获取它调用的资源方法的引用,这样我就可以运行它而无需发出网络级HTTP请求。也就是说,在下面的示例中,我想使用URL“www.frimastudio.com:8080/time”获取对getServerTime()方法的引用,然后我可以直接调用该方法 Jersey(或其他什么?)是否提供
Jersey(或其他什么?)是否提供了实现这一点的方法,或者我是否必须导入我要调用的特定资源类、实例化它,等等。?提前谢谢 是的,这是一个RESTful API,允许路由配置(仅带注释) 例如:
package com.frimastudio.webservice.controller.route;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.joda.time.DateTime;
import com.frimastudio.webservice.controller.representation.Time;
@Path("/time")
@Produces(MediaType.APPLICATION_JSON)
public class TimeResource
{
public TimeResource()
{
}
@GET
public Time getServerDate()
{
return new Time(new DateTime());
}
}
作为杰克逊的代表:
package com.frimastudio.webservice.controller.representation;
import org.hibernate.validator.constraints.NotEmpty;
import org.joda.time.DateTime;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Time
{
@NotEmpty
@JsonProperty
private String date;
public Time()
{
// Jackson deserialization
}
public Time(String date)
{
super();
this.date = date;
}
public Time(DateTime date)
{
super();
this.date = date.toString();
}
}
这似乎是不可能的,从新泽西州的代码来看。查找由
HttpMethodRule.Matcher
执行,它是一个私有类,仅用于实现HttpMethodRule.accept
在我看来,
accept
if(s==MatchStatus.MATCH){中的所有内容都可以被拉到自己的方法中并向用户公开。我想我的问题还不够清楚。我已经定义了资源方法和所有方法。我正在从外部类进行性能测试,并且我有URL(www.frimastudio.com:8080/time来自您的示例)。我知道可以使用Jersey(通过WebResource)向该URL抛出HTTP请求。我想使用该URL获取对getServerDate()的引用方法,所以我可以直接调用它,而无需通过网络。如果你想执行负载测试脚本,你应该像客户端那样直接调用uri。如果你真的想绕过http服务器调用你的函数,你应该使用另一个通信服务,如websocket。是的,只需实例化你的资源类和call方法。你不能比这更直接、更舒适地调用方法。