【问题标题】:apache cxf ContainerRequestContext is returning always nullapache cxf ContainerRequestContext 总是返回 null
【发布时间】:2017-09-25 11:54:25
【问题描述】:

我有一个实现 ContainerRequestFilter 的类 AuthorizationFilter。

@Provider
@Authorization
public class AuthorizationFilter implements ContainerRequestFilter {

@Override
public void filter(ContainerRequestContext requestContext) throws 
IOException {
    // TODO Auto-generated method stub
    InputStream entityIn = requestContext.getEntityStream();

  }

}

这个过滤器应该在这个方法之前被调用:

@Path("/delete/volume")
@Authorization
public Response deleteVolumeForTechAccount(VolumeRequestJSON volumeForDeletion) {
    log.debug("Delete volume was called ");

    VolumeOperation operator = getVolumeOperator();

    try {
        log.debug("Deleting volume with id: " + volumeForDeletion.getVolumeId());

        operator.deleteVolume(volumeForDeletion.getVolumeId());

        log.debug("Volume with id: " + volumeForDeletion.getVolumeId() + "was deleted");

        return Response.ok().build();
    } catch (OperationException ex) {
        log.error("OperationException occured durring deletion of volume: " + volumeForDeletion.getVolumeId(), ex);

        return buildResponseWithHeader(HttpURLConnection.HTTP_INTERNAL_ERROR, ex.getMessage());
    }

}

我用以下 JSON 数据调用其余部分:

{"volumeId":"test"}

方法执行成功但是当我调用时:

requestContext.getEntityStream() 在过滤器中它总是返回 null。

我想读取过滤器中的json数据。

如果我做错了什么,请解释一下。

谢谢

【问题讨论】:

    标签: java json web-services jax-rs cxf


    【解决方案1】:

    原因是因为我使用的是旧版本的 apache cxf bundle。 当我将版本更改为:

    <dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-bundle</artifactId>
    <version>2.7.18</version>
    </dependency>
    

    问题已解决。

    该问题也已正式提交给 apache cxf。 链接在这里: https://issues.apache.org/jira/browse/CXF-5243

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-27
      • 2014-03-04
      • 2016-11-02
      • 2014-05-06
      • 2012-06-05
      • 2014-05-30
      • 2014-02-23
      • 2017-10-12
      相关资源
      最近更新 更多