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

使用CXF从驼峰路由调用无参数webservice操作

祁和通
2023-03-14

ThingsService是jax-ws生成的webservice接口(为简洁起见去掉了注释)。有一种无参数方法:

public interface ThingsService {
    AvailableThingsResponse getAvailableThings();
}

尝试使用CXF从Camel路由调用无参数操作,如下所示:

from("timer:start?fixedRate=true")
        .setHeader(CxfConstants.OPERATION_NAME, constant("getAvailableThings")
        .to("cxf:http://localhost:8080/services/things"
            + "?serviceClass=" + ThingsService.class.getName());

调用终结点时导致驼峰呕吐:

rocessor.processIllegalArgumentException:获取错误的参数大小来调用out服务,期望大小为0,参数大小为1。请检查消息正文是否与CXFEndpoint POJO数据格式请求匹配。rocessor.java:197CxfPorg.apache.camel.processor.ParameterSize(CxfPipeline.process)atipeline.java:120CxfPorg.apache.camel.processor.Params(CxfPipeline.process)atipeline.java:83CxfPorg.apache.camel.processor.(CxfProcessor.process)atrocessor.java:197SendPorg.apache.camel.component.timer.(SendPonsumer.send)atorg.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)atorg.apache.camel.processor.ReDeliveryErrorHandler.process(ReDeliveryErrorHandler.java:542)atorg.apache.camel.processor.CamelInternalPjava.lang.(CamelInternalPorg.apache.camel.component.cxf.)atroducer.checkProducer.java:283(Porg.apache.camel.component.cxf.)atroducer.getProducer.java:321(Porg.apache.camel.component.cxf.)atroducer.processCamelInternalProducer.java:131(CamelInternalPorg.apache.camel.processor.)atrocessor.processTimerCrocessor.java:145TimerExchange(Timer. java: 192)at org. apache. camel. timer. Timer消费者1美元. run(Timer消费者1美元

CXF终结点处于POJO模式,发送给终结点的exchange正文为空。

使用CXF组件从驼峰路由调用无参数WS操作的正确方法是什么?

共有1个答案

夹谷浩博
2023-03-14

原来no-params是使用空数组表示的:

from("timer:start?fixedRate=true")
        .setHeader(CxfConstants.OPERATION_NAME, constant("getAvailableThings")
        .transform().body(o -> new Object[0])
        .to("cxf:http://localhost:8080/services/things"
            + "?serviceClass=" + ThingsService.class.getName());
 类似资料:
  • 关于ApacheCamel的简短问题。我有以下场景,其中我的服务器接收jms消息,然后转换为csv文件,然后插入DB。为此,我有两个bean: xml2csv 我使用路由像: 当"路由"一个文件从-到,它是移动像一个消息?或者把问题放在不同的地方,ApacheCamel是否获取一个文件,将其包装为消息,并将其路由到bean或组件? 我的理解是正确的还是错误的。

  • 将路由链接到参数 显示特定产品详细信息的组件的路由需要该产品ID的路由参数。我们可以使用以下实现: 注意:product-details路由的路径中的 ,它将参数放在路径中。例如,要查看ID为5的产品的产品详细信息页面,必须使用以下URL:localhost:3000/product-details/5 注意,指令传递一个数组,该数组指定路径和路由参数。或者,我们可以使用JS跳转: Product

  • 要求:我们在java应用程序中创建一个数据库连接。我们需要在整个Java应用程序上通过相同的连接运行所有语句。问题:一旦在骆驼路由中传递创建的数据源,它显然会创建一个新的连接。 我正在使用一个数据源对象来创建到Oracle数据库的连接。关于这一点,我做了几个陈述。 作为第二部分,我使用为我的骆驼路线创建的数据源 在我的路径中,我使用一个bean来创建一个查询,最终到达我的数据库。 所以在这种情况下

  • 我试图通过驼峰路由将消息放到Weblogic JMS中的队列中。 我的目标是最终配置一个Route以使用来自jms队列的消息,我将早期Route的数据发布到该队列。 这是我的配置: 我的路线如下所示: 我尝试执行此路由时遇到此异常: 我按照以下过程创建了此处提到的队列:https://blogs.oracle.com/soaproactive/entry/how_to_create_a_simpl

  • 我想使用骆驼路由接收消息,但能够以某种方式注入自定义“容器工厂”。 通常(没有骆驼路线),你会做以下事情: 注意上面“JmsListener”注释的“containerFactory”属性如何为我们提供了一种使用非默认“containerFactory”的方法。这很好,但是如果我们想使用骆驼路径从队列中读取呢?类似于: 在上面的最新案例中,我无法“注入”自定义JMS containerFactor

  • 我将数据插入到多个表中,我使用mybatis组件来实现这一点。在插入数据之前,我还需要创建一个临时表。高层概述如下: 获取要插入的数据 步骤2到5应该是他们自己的单一事务,以防出现故障。我现在有这个: CreateTmpLinksTable需要有权访问当前连接,这样临时表的创建就不会在不同的事务中发生(如果有关系,以PostgreSQL为目标)。 我目前有: 我也没有设置我的交易管理器。我怀疑我必