Jersey 以编程方式调用方法

Jersey 以编程方式调用方法,jersey,Jersey,我需要拦截Jersey资源调用,并在每次ResourceMethod调用之前/之后运行代码。我有一个ModelProcessor,能够拦截呼叫: for(Resource resource: resourceModel.getResources()) { for (ResourceMethod resourceMethod : resource.getResourceMethods()) { Resource.Builder resourceBuilder = Resou

我需要拦截Jersey资源调用,并在每次ResourceMethod调用之前/之后运行代码。我有一个ModelProcessor,能够拦截呼叫:

for(Resource resource: resourceModel.getResources()) {
    for (ResourceMethod resourceMethod : resource.getResourceMethods()) {
        Resource.Builder resourceBuilder = Resource.builder(...);

        resourceBuilder
        .addMethod(resourceMethod)
        .handledBy(new Inflector<ContainerRequestContext, Response>() {
          @Override
          public Response apply(ContainerRequestContext containerRequestContext) {
              ...
          }
        });
    }
}
for(资源:resourceModel.getResources()){
对于(ResourceMethod ResourceMethod:resource.getResourceMethods()){
Resource.Builder resourceBuilder=Resource.Builder(…);
资源建设者
.addMethod(resourceMethod)
.handledBy(新拐点(){
@凌驾
公共响应应用(ContainerRequestContext ContainerRequestContext){
...
}
});
}
}

但是,我不知道如何调用原始的资源方法。

< P>你可以考虑使用泽西过滤器或拦截器。 从文件中:

过滤器和拦截器可以在客户端和客户端的两侧使用 服务器端。筛选器可以修改入站和出站请求以及 响应,包括修改标题、实体和其他 请求/响应参数。拦截器主要用于 修改实体输入和输出流。你可以用 拦截器,例如压缩和解压输出和输入实体 溪流

拦截器为服务器和客户端共享一个公共API。 而过滤器主要用于处理请求和 HTTP头、URI和/或HTTP方法等响应参数, 拦截器旨在通过操纵实体来操纵实体 实体输入/输出流。例如,如果您需要对实体进行编码 然后您可以实现一个拦截器来执行 这是你的工作

所以我认为您希望使用拦截器,因为它们将包装资源调用,并且您将在资源调用之前和之后以相同的方法进行访问


您也可以使用过滤器,但您必须中断代码,才能使用RequestFilter和ResponseFilter。

听起来像是在尝试这样做。泽西岛的基础直接投资系统HK2已经启用。看看它的用法。