首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CXF RequestContextFilter

CXF RequestContextFilter
EN

Stack Overflow用户
提问于 2016-06-09 14:43:42
回答 1查看 1.2K关注 0票数 2

http://cxf.apache.org/docs/30-migration-guide.html

CXF RequestHandler和ResponseHandler过滤器已被删除,请使用JAX-RS2.0 ContainerRequestFilter和ContainerResponseFilter,并在需要时使用WriterInterceptor和ReaderInterceptor。

怎么重写它?我找不到任何将org.apache.cxf.message.Message作为参数并返回响应的示例。

另外,我应该使用ContainerResponseFilter

代码语言:javascript
复制
public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException {

而不是RequestHandler

代码语言:javascript
复制
Response handleRequest(Message m, ClassResourceInfo resourceClass)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-09 15:27:30

替换RequestHandler

代码语言:javascript
复制
public class CustomRequestHandler implements RequestHandler {
    public Response handleRequest(Message m, ClassResourceInfo resourceClass) {

ContainerRequestFilter

代码语言:javascript
复制
public class CustomRequestFilter implements ContainerRequestFilter {
    public void filter(ContainerRequestContext context) {
        Message m = JAXRSUtils.getCurrentMessage(); 
        OperationResourceInfo m = message.getExchange().get(OperationResourceInfo.class);
        ClassResourceInfo resourceClass = operation.getClassResourceInfo();
        // finally use context.abortWith(Response) if you need to block the request 

替换ResponseHandler

代码语言:javascript
复制
public class CustomResponseHandler implements ResponseHandler {
    public Response handleResponse(Message m, OperationResourceInfo operation, Response response) {

ContainerResponseFilter

代码语言:javascript
复制
public class CustomResponseFilter implements ContainerResponseFilter  {
    public void filter(ContainerRequestContext inContext, ContainerResponseContext outContext) throws IOException{
        Message m = JAXRSUtils.getCurrentMessage();
        OperationResourceInfo operation = m.getExchange().get(OperationResourceInfo.class);
        //outContext has the capabilites of javax.ws.rs.Response. For example outContext.setStatus(201);

春天

代码语言:javascript
复制
<bean id="customRequestFilter" class="com.CustomRequestFilter" />
<bean id="customResponseFilter" class="com.CustomResponseFilter" /> 

<!-- Add filters to provider zone in JAX-RS server-->
<bean id="myRestServer" class="org.apache.cxf.jaxrs.JAXRSServerFactoryBean" lazy-init="false" init-method="create">
    ...
    <property name="providers">
        <list>
            <ref bean="customRequestFilter" />
            <ref bean="customResponseFilter" /> 
        </list>
    </property>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37729135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档