java - Apache Camel 和 CXF : How do i send HTTP status code from bean

标签 java rest cxf apache-camel cxfrs

我有一个基于cxf和camel的restful web服务。我在我的工作流程中使用 Camel 路由,它是这样的..

Client --> My Rest Service Class --> Camel Custom Processors --> Bean Bar 的一些方法 Foo

Bean FooBar 看起来像这样..

public class Bar {

    public MyObject foo(String request, Exchange exchange){
    //do some procesing 

    return instance of MyObject;
}

现在的问题是,每当我测试这个时,我都会在客户端收到 200 的响应代码。现在,如果我希望此代码不是 200,我需要将其设置在 HttpServletResponse 或其他一些 javax.ws.rs.core.Response 对象中,但我该怎么做我访问这个响应对象。

我尝试了以下方法,但没有解决我的问题。

  1. exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 202);

  2. exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, 202);

  3. exchange.setProperty(Exchange.HTTP_RESPONSE_CODE, 202);

  4. Response.status(202).build();

最佳答案

这是一个解决方法,我不知道这是否是唯一的方法,但这对我有用。将方法 Foo 的返回类型更改为 Response(javax.ws.rs.core) ,然后将您的对象(“myobject 的实例”)包装在此响应中,如果您想的话,您也可以指定 mime 类型..是一个样本..

public class Bar {
    public Response foo(String request, Exchange exchange){
        //make instance of MyObject
        MyObject myObj = new myObj();
        //do your processing and set the object in response code
        Response response = Response.status(Status.ACCEPTED).entity(myObj).type(MediaType.APPLICATION_JSON).build();
        return response;
    }
}

关于java - Apache Camel 和 CXF : How do i send HTTP status code from bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10425955/

相关文章:

java - 即使找到两个库,Spark 也会出现日志记录错误

java - 从 CSV 加载时的 PostgreSQL/JooQ 批量插入性能问题;我如何改进流程?

servlets - 将 CXF 与 Spring Boot Actuator 结合使用

rest - 从现有的 CXF 休息服务生成 wadl

java - JAVA 中的非交互式密码 SSH

java - 如何使用 REPLICA_SET_SECONDARY 类型对 MongoDB 服务器执行写操作?

Spring MVC - 发生 http 404 时的 RestTemplate 启动异常

rest - 在 Delphi 中使用来自 Indy 的 GitHub API

rest - 设计问题 : how to create a restful interface made out of multiple domain objects?

java - 获取 CXF 错误 : javax. xml.ws.WebServiceException:WSDL 元数据无法用于创建代理