Jakarta ee MessageBodyWriter与WriterInterceptor

Jakarta ee MessageBodyWriter与WriterInterceptor,jakarta-ee,jax-rs,java-ee-7,Jakarta Ee,Jax Rs,Java Ee 7,对于JAX-RS2.0规范的WriterInterceptor接口的确切意图,我有点困惑 到目前为止我所知道的: 在MessageBodyWriter 两个接口都授予对相同变量的访问权限 MessageBodyWriter负责将对象转换为流 Arun Gupta在他的JavaEE7书中指出,编写者/读者的接受者主要关注HTTP主体的编组和解编 我的问题是:读写器拦截器应该用于什么目的?在服务器端,您可以让消息体编写器进行实体编组,而拦截器可以处理: 执行编组实体的GZIP压缩 将封送实体包

对于JAX-RS2.0规范的
WriterInterceptor
接口的确切意图,我有点困惑

到目前为止我所知道的:

  • MessageBodyWriter
  • 两个接口都授予对相同变量的访问权限
  • MessageBodyWriter
    负责将
    对象
    转换为流
  • Arun Gupta在他的JavaEE7书中指出,编写者/读者的接受者主要关注HTTP主体的编组和解编

我的问题是:读写器拦截器应该用于什么目的?

在服务器端,您可以让消息体编写器进行实体编组,而拦截器可以处理:

  • 执行编组实体的GZIP压缩
  • 将封送实体包装在数字签名信封中(读卡器拦截器可以在进一步处理之前验证签名)
  • 添加缓存控制头
例如:

@Override
void aroundWriteTo(WriterInterceptorContext ctx) ... {
    OutputStream old = ctx.getOutputStream();
    GZIPOutputStream gzipOutputStream = new GZIPOutputStream(old);
    ctx.setOutputStream(gzipOutputStream);
    updateHeaders(ctx);
    try {
        ctx.proceed();
    } finally {
        gzipOutputStream.finish();
        ctx.setOutputStream(old);
    }
}
(以上代码来自JAX-RS 2.0规范第6.3节)


HTH.

在服务器端,您可以让消息体编写器进行实体编组,而拦截器可以处理:

  • 执行编组实体的GZIP压缩
  • 将封送实体包装在数字签名信封中(读卡器拦截器可以在进一步处理之前验证签名)
  • 添加缓存控制头
例如:

@Override
void aroundWriteTo(WriterInterceptorContext ctx) ... {
    OutputStream old = ctx.getOutputStream();
    GZIPOutputStream gzipOutputStream = new GZIPOutputStream(old);
    ctx.setOutputStream(gzipOutputStream);
    updateHeaders(ctx);
    try {
        ctx.proceed();
    } finally {
        gzipOutputStream.finish();
        ctx.setOutputStream(old);
    }
}
(以上代码来自JAX-RS 2.0规范第6.3节)


HTH.

在服务器端,您可以让消息体编写器进行实体编组,而拦截器可以处理:

  • 执行编组实体的GZIP压缩
  • 将封送实体包装在数字签名信封中(读卡器拦截器可以在进一步处理之前验证签名)
  • 添加缓存控制头
例如:

@Override
void aroundWriteTo(WriterInterceptorContext ctx) ... {
    OutputStream old = ctx.getOutputStream();
    GZIPOutputStream gzipOutputStream = new GZIPOutputStream(old);
    ctx.setOutputStream(gzipOutputStream);
    updateHeaders(ctx);
    try {
        ctx.proceed();
    } finally {
        gzipOutputStream.finish();
        ctx.setOutputStream(old);
    }
}
(以上代码来自JAX-RS 2.0规范第6.3节)


HTH.

在服务器端,您可以让消息体编写器进行实体编组,而拦截器可以处理:

  • 执行编组实体的GZIP压缩
  • 将封送实体包装在数字签名信封中(读卡器拦截器可以在进一步处理之前验证签名)
  • 添加缓存控制头
例如:

@Override
void aroundWriteTo(WriterInterceptorContext ctx) ... {
    OutputStream old = ctx.getOutputStream();
    GZIPOutputStream gzipOutputStream = new GZIPOutputStream(old);
    ctx.setOutputStream(gzipOutputStream);
    updateHeaders(ctx);
    try {
        ctx.proceed();
    } finally {
        gzipOutputStream.finish();
        ctx.setOutputStream(old);
    }
}
(以上代码来自JAX-RS 2.0规范第6.3节)