Jakarta ee MessageBodyWriter与WriterInterceptor
对于JAX-RS2.0规范的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压缩 将封送实体包
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节)
嗯