apache cxf ContainerRequestContext 总是返回 null
apache cxf ContainerRequestContext is returning always null
我有一个 class AuthorizationFilter 实现了 ContainerRequestFilter。
@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() 在过滤器中 returns 始终为空。
我想读取过滤器中的 json 数据。
如果我做错了什么请解释。
谢谢
原因是因为我使用的是旧版本的 apache cxf 包。
当我将版本更改为:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle</artifactId>
<version>2.7.18</version>
</dependency>
问题已解决。
另外这个issue已经正式提交给apache cxf了。
这是 link:
https://issues.apache.org/jira/browse/CXF-5243
我有一个 class AuthorizationFilter 实现了 ContainerRequestFilter。
@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() 在过滤器中 returns 始终为空。
我想读取过滤器中的 json 数据。
如果我做错了什么请解释。
谢谢
原因是因为我使用的是旧版本的 apache cxf 包。 当我将版本更改为:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle</artifactId>
<version>2.7.18</version>
</dependency>
问题已解决。
另外这个issue已经正式提交给apache cxf了。 这是 link: https://issues.apache.org/jira/browse/CXF-5243