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

阿帕奇骆驼:发送空体ws

秋阳荣
2023-03-14

如何使用Apache Camel调用带有空消息体的SOAP Web服务?

例如,路由上的最后一个endpoint将是调用我的代理上采用 0 个参数的方法。

编辑:

xml配置示例:

<route id="someRoute">
            <from uri="ref:activemq-queue"/>
            <setHeader headerName="operationName">
                <constant>invoke</constant>
            </setHeader>
            <to uri="cxf:bean:someWS"/>
</route>

...

<cxf:cxfEndpoint id="someWS" address="${ws.address}"
                     serviceClass="com.example.ws.SomeWS"

问题是 WS 上的方法“invoke”需要 0 个参数,并且会抛出一个异常,指出正在接收 1 个参数。有没有办法让我指定忽略此收到的输入?

共有3个答案

刘星火
2023-03-14

如果主体的内容与bean的方法所需的类的正确类型不匹配,则xml配置将失败。默认情况下,它可以是Object,而不是String。当该方法以不正确的格式接收正文时,它将处理一个<code>null</code>值,而不是路由的正文。要解决这个问题,您需要将主体转换为bean方法的预期类。例如,如果bean的方法参数是<code>String</code>,那么您可以执行以下操作:

<route id="someRoute">
    <from uri="ref:activemq-queue"/>
    <setHeader headerName="operationName">
        <constant>invoke</constant>
    </setHeader>
    <convertBodyTo type="String"/>
    <to uri="cxf:bean:someWS"/>
</route>

关于身体转换的更多信息,可以查看文档:https://camel . Apache . org/components/3.14 . x/eips/convertBodyTo-EIP . html

祁承嗣
2023-03-14

我还需要一个空的主体来设置一个 Apache Camel xml,下面的解决方案对我有用。

        <setBody id="set-empty-body">
            <constant/>
        </setBody>

希望这对任何需要它的人都有帮助。

壤驷德寿
2023-03-14

如果调用只接受0个参数,可以将消息体设置为null。从camel 2.12.3开始,添加了空的简单表达式。

<route id="someRoute">
            <from uri="ref:activemq-queue"/>
            <setBody>
               <simple>null</simple>
            </setBody>
            <setHeader headerName="operationName">
                <constant>invoke</constant>
            </setHeader>
            <to uri="cxf:bean:someWS"/>
</route>
 类似资料:
  • 我试图使用Apache Camel Quartz2实现一个调度器,它每分钟执行一次路由,并按预期执行一些任务。我使用spring DSL实现与apache camel相关联的路由,如下所示: 根据日志,它不会记录为路由记录的消息,例如Direct:DomainsWithFTPUsers等等。请指导如何实现同样的目标。

  • 遵循官方文件(https://camel.apache.org/manual/component-dsl.html#_using_component_dsl)我创建了以下代码: 但是中的告诉我: 并且中的特性不建议导入相应的库。 有人能给我指出正确的方向吗? 我必须理解的概念才能做到这一点吗?

  • 我们需要的是直接的API来设置和使用集群消息队列。我们最初的计划是使用Camel在集群JMS或ActiveMQ队列上进行消费/生产。Kafka如何使这项任务变得更容易?在任何一种情况下,应用程序本身都将在WebLogic服务器上运行。 消息传递将是点对点类型,其中有多个相同服务的实例在运行,但根据负载平衡策略,只有一个实例应该处理消息并发出结果。消息队列也是群集的,因此服务实例或队列实例的失败都不

  • 考虑到apache Camel,我有一个问题:是否可以通过代码来创建全局拦截器,例如AOP?拦截器应该跳过endpoint还是模仿endpoint? 提前致谢

  • 我对骆驼生产商有很好的了解,但我不能对各种骆驼消费者保持清醒的头脑。特别是事件驱动消费者和轮询消费者,camel如何知道为这些消费者调用回调? 消费者的一般流量是多少?

  • 我在projet中使用ApacheCamel,我想使用Product注释发送文件中的对象。首先,可能吗?有更好的办法吗? 其次,我尝试了这个代码片段: 当我调用发布方法时,生产者不是注入(null)。有人有主意吗?提前谢谢。