gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:55:16 30 4
gpt4 key购买 nike

我有一个基于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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com