【问题标题】:camel bean method parameter conversion骆驼豆方法参数转换
【发布时间】:2014-06-21 23:40:17
【问题描述】:

我正在创建骆驼路线,第一步还可以,但我无法调用我制作的另一个 osgi 包的方法。 我的服务期望参数中有一个 Long 值,而我的 pojo 只有这个 id。

我的服务:

public interface FooService {
    void bar(Long id);
}

我的路线:

<route>
    <from uri="direct:anEntry"/>
    <bean ref="myBean" method="bar"/>
</route>

还有我的路线数据格式:

public class MyDto implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long myId;

    public Long getMyId() {
        return myId;
    }

    public void setMyId(Long myId) {
        this.myId= myId;
    }

    @Override
    public String toString() {
        return "MyDto [myId=" + myId+ "]";
    }

}

使用这段代码,你得到了 NoTypeConversionAvailableException

没有可用于将类型:my.company.MyDto 转换为所需类型:java.lang.Long 的类型转换器,其值为 MyDto [myId=141564]

我找不到转换 Dto 的地方。

我试图让我的服务期望一个与其中一个路由具有相同结构的 dto,但我有同样的错误。

有什么想法吗?

【问题讨论】:

    标签: apache osgi apache-camel spring-dm


    【解决方案1】:

    如Christian所说,还是调用body上的getMyId方法

    <bean ref="myBean" method="bar(${body.myId})"/>
    

    查看更多详情

    【讨论】:

      【解决方案2】:

      您可以在从 MyDto 转换为 Long 的路径中添加一个步骤。例如,使用这种方法的简单 bean: 长 getId(MyDto dto);

      或者您可以在调用时简单地在路由正文中添加一个 long。

      如果您想在服务和路由之间共享 MyDto,请确保将其与服务接口一起放在单独的捆绑包中,以避免类加载问题。不要嵌入共享类/接口。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-03
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 1970-01-01
        • 2019-02-22
        • 2014-04-21
        相关资源
        最近更新 更多