当前位置: 首页 > 知识库问答 >
问题:

Apache Camel CXF响应202而不是200

常永怡
2023-03-14

我正在使用Apache Camel CXF集成SOAP WebService。一切正常,但我注意到我的响应返回为HTTP 202而不是200。我有点担心,因为我知道很多人对if(httpCode==200){...}之类的东西进行硬编码,这可能会破坏当前的服务。

我曾尝试使用不同的拦截器覆盖202到200的HTTP代码,但没有成功。此外,202表示已接受,这表示请求正在处理中但尚未完成。200表示正常,表示过程已完成。这是否意味着我在路上做错了什么?

解决这个问题的正确方法是什么?拦截器?设置骆驼头?在路线上做些什么来说它完成了?

我使用Apache Camel 2.12.1和PAYLOAD模式。

编辑:它似乎与OneWayendpoint有关。有什么方法可以停用它吗?

EDIT2:经过几个小时的尝试,我想我找到了根本原因。我的WSDL没有为该特定操作定义任何输出。我无法更改WSDL。也就是说,我相信当CXF使用WSDL创建endpoint时,它会自动假定它是单向endpoint,因为没有输出。这意味着一旦我们收到代码为202的请求,响应就会被发回。此外,我相信由于这个原因,不存在可能的outiteceptor链。我个人认为发回202是可以的,但发回200是服务要求。我在CXF中是否更改了任何配置,以便在单向endpoint模式下设置?

共有1个答案

颛孙正谊
2023-03-14

最后,我们找到了一个拦截器:

public class SoapResponseInterceptor extends AbstractSoapInterceptor {

    public SoapResponseInterceptor() {
        super(Phase.PRE_LOGICAL);
    }

    @Override
    public void handleMessage(SoapMessage message) throws Fault {
        message.getExchange().setOneWay(false);
    }
}

希望有帮助!

 类似资料:
  • 我在php中有两个oauth2客户端的例子,一个工作,另一个不工作,它返回一个错误: ([错误]= 我的问题是,oauth2服务器应该何时返回带有client_id的访问令牌响应,以及应该何时返回带有refresh_token的响应? 我的工作要求是: 我的不工作请求是: 既然它只是和变化,那么它什么时候应该来一个,什么时候应该来另一个?

  • 当web会话过期时,Spring Security将以403 HTTP状态进行响应。理想情况下,它会以401作为回应。未经授权和禁止是不同的。只有在存在有效会话的情况下,对安全资源的请求才应返回403,但用户只是没有对所述资源的权限。如果资源是安全的,并且没有经过身份验证的会话,那么Spring Security应该返回401。 我的应用程序需要非常具体地区分这两个错误代码。 我的问题是,我如何定

  • 问题内容: 我正在尝试使用Spring 3.0.6返回JSON响应,但是得到了406响应“ Not Acceptable”,其描述为:“此请求所标识的资源仅能够生成具有以下特征的响应:请求“接受”标头()。” 我知道之前曾问过一个非常类似的问题,但尽管进行了许多测试,但我无法使它适用于我的项目,而且我不知道自己在做什么错。 在我的Maven pom.xml中,执行以下操作: 在web.xml中,我

  • 我不明白为什么ServletRequest有一个setAttribute方法。如果我有一个包含一个文本框和一个提交按钮的jsp页面。。。 我的目标是当我提交时,我的名字应该显示在那个文本框中。问题:文本框中显示的任何内容都是来自servlet的响应,对吗? 但在我在servlet部分的作业中:这是一个书面请求。setAttribute(“名称”、“abc”); 在jsp端: 它是这样写的:

  • 这个问题是不是太长了?请原谅,我是新来的。请编辑并建议。 控制器类:

  • HTTP 202 Accepted响应状态码指示该请求已被接收但尚未起作用。它是非承诺的,这意味着HTTP中没有办法稍后发送指示处理请求结果的异步响应。它适用于其他进程或服务器处理请求或批处理的情况。 状态 202 Accepted 规范 规范 标题 RFC 7231,第6.3.3节:202接受 超文本传输协议(HTTP / 1.1):语义和内容