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

处理camel-context.xml中的自定义异常

赵珂
2023-03-14

我来找你是因为我需要你的帮助。

在我的文件camel-context.xml中,我调用了一个存储过程来获取用户的信息。我需要解决的是:

如果存储过程不返回数据,则发送带有超文本传输协议代码404的UserNot的异常(我已经拥有该类)。

我一直在寻找如何做这件事,但找不到任何可以帮助我的东西。我刚刚开始使用这个框架,所以提前非常感谢您的帮助。

这里我的代码:

     <route id="getUser" streamCache="false">
        <from uri="direct:getUser"/>
        <to uri="sql-stored:[dbo].[usp_get_user](VARCHAR ${headers.userId})?dataSource=#primarydatasource" />
        <setBody>
            <simple>${body['#result-set-1']}</simple>
        </setBody>
        <marshal> <custom ref="userObject" /> </marshal>
        <unmarshal>
            <custom ref="userObject"/>
        </unmarshal>
    </route>

共有1个答案

锺离赤岩
2023-03-14

可以添加一个< code>onException子句来处理PL-SQL错误:

<routes>
    <route id="getUser" streamCache="false">
        <from uri="direct:getUser"/>
        <onException>
            <exception>some.package.UserNotFound</exception>
            <handled>
                <constant>true</constant>
            </handled>
            <bean ref="someExceptionHandlerBean" method="handleUserNotFound"/>
            <!-- remaining endpoints declaration -->
        </onException>
        <to uri="sql-stored:[dbo].[usp_get_user](VARCHAR ${headers.userId})?dataSource=#primarydatasource" />
        <setBody>
            <simple>${body['#result-set-1']}</simple>
        </setBody>
        <marshal> <custom ref="userObject" /> </marshal>
        <unmarshal>
            <custom ref="userObject"/>
        </unmarshal>
    </route>
</routes>

< code > someExceptionHandlerBean 将是一个POJO bean,它定义了一个< code>#handleUserNotFound方法,在该方法中,您将返回一个特定于错误的包装器,在您的情况下,它将是某种具有正确< code>404状态的HTTP响应对象。

 类似资料:
  • 我创建了一个自定义endpoint来利用某些数据的异步处理。现在,我想将处理结果传送到另一条路由,以便将结果保存在数据库中,但我不知道如何访问异步处理器中的producer模板。

  • 我使用netbeans创建了这个异常类: 当我尝试编译时,问题变得更加突出,在setter方法中,我得到以下消息: 错误:未报告异常异常;必须捕获或声明被抛出抛出新车辆异常(2,matricula);C:\users\ivan\desktop\examen isidrer\m03-uf5\exmaenm03uf5\src\info\infomila\vehicle.java:55:错误:未报告的异

  • 我使用的是Nifi 0.4.1版本。我写自定义代码转换CSV到avro格式。我已经创建了类文件,并能够生成nar文件。将nar文件放置在lib目录中,并重新启动nifi服务器。 任何帮助都很感激.. 谢谢,

  • 我的要求是,如果post请求的JSON无效,我将需要发送400个HTTP响应代码,如果任何字段不可解析,返回状态代码将为422。例如,post请求可以是: Dto类提供如下:, 这是发出POST请求的控制器, 如果“金额”是,比如说,“sfdfd”,这不是大小数,我们应该提供422。但如果“金额”为“-12.3343”,则这是约束验证错误,但数据有效且可分析。所以我们不能拥有422。 这是我的异常

  • 问题内容: 我们正在使用Spring MVC + Spring Security + Hibernate创建一个RESTful API。该API可以生成JSON和HTML。做好弹簧安全性的错误处理让我头疼: 身份验证可以通过多种方式进行:BasicAuth,通过POST请求中的不同参数以及通过Web登录。对于每种身份验证机制,在Spring Security xml配置的名称空间元素中声明了一个过

  • 我正在使用来自外部API的一些RESTendpoint,为此我正在使用REST模板接口。当我从这些调用中收到某些HTTP状态代码时,我希望能够抛出自定义应用程序异常。为了实现它,我正在实现ResponseErrorHandler接口,如下所示: 最后,这是客户端代码(无关代码省略): 我的应用程序上下文: 我怀疑我没有正确理解此自定义错误处理的行为。每个rest模板方法都可能抛出一个RestCli