首页 > 解决方案 > @pathparam 以及 apache-cxf webservice 的 POST 有效负载

问题描述

我的 impl 类实现的接口看起来像这样

@POST
@Path("/callA/{A}")
public FObj invokeA(@PathParam("A") int a,FObj fobj);

customRouteBuilder正在将请求路由到上述公开的服务

.choice().when().simple("${header.operationName} == 'CallA'")
        .to("bean:BeanA?method=invokeA")

但是,当我通过从有效负载和路径参数设置对象来从 Rest 客户端访问服务时,我得到 500 内部服务器错误。

org.apache.camel.CamelExecutionException:在交易所执行期间发生异常原因:org.apache.camel.InvalidPayloadException:没有可用的类型:int但具有值:com.dev.tp.FObj

标签: restweb-servicesapache-camelcxfpath-parameter

解决方案


当您点击服务时,如果您使用的是 CXFRS 组件(我猜您是),则header.operationName设置为 的值。来自 jaxrs 规范。骆驼对此一无所知。当您调用带有两个参数的方法时,它会尝试将主体负载转换为第一个参数,并且您会看到异常。invokeA@PathParam

我建议你看看这篇文章


推荐阅读