Java 驼峰HTTP\u响应\u代码设置
我正在尝试处理路由中的异常,该异常是由我的soap端点使用OneException引发的。我需要实现一些自定义逻辑来将SOAP验证映射到某些HTTP响应头 当我使用Java 驼峰HTTP\u响应\u代码设置,java,apache-camel,Java,Apache Camel,我正在尝试处理路由中的异常,该异常是由我的soap端点使用OneException引发的。我需要实现一些自定义逻辑来将SOAP验证映射到某些HTTP响应头 当我使用 setHeader(Exchange.HTTP_RESPONSE_CODE, constant(502)). 直接在我的路线定义中,标题设置良好。但是,我的自定义逻辑无法实现 我试图在处理器中设置标头 exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, "502");
setHeader(Exchange.HTTP_RESPONSE_CODE, constant(502)).
直接在我的路线定义中,标题设置良好。但是,我的自定义逻辑无法实现
我试图在处理器中设置标头
exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, "502");
但它被忽略,系统震荡我的响应接收到HTTPCode=200。
完整的路由代码如下:
rest().post("/mypost")
.type(MyRequest.class)
.outType(MyResponse.class)
.route().routeId("rst_myrest")
.log(LoggingLevel.DEBUG,"recived: ${body}")
.to("direct:drt_addData")
.endRest();
onException(ServiceException.class).
handled(true).
setHeader(Exchange.HTTP_RESPONSE_CODE, constant(502)). //i remove this line when using processor header setup
onExceptionOccurred(serviceExceptionProcessor).
marshal(new JsonDataFormat(JsonLibrary.Jackson)).end();
public class ServiceExceptionProcessor implements Processor{
@Override
public void process(Exchange exchange) throws Exception {
ServiceException request = exchange.getException(ServiceException.class);
//preparing body, etc
exchange.getOut().setBody(message, Errors.class);
// some logic for defining header response code
// for example response code is 502
exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, "502");
}
}
如何在处理器中设置标头?标题设置是如何工作的?您应该使用exchange.getIn()而不是getOut()。太好了,它可以工作了!我想知道为什么没有创建“输出”交换。只有“内部”交换存在。在99%的情况下,您无需担心出局。