我正在创建一个骆驼路线,第一步是可以的,但我无法调用我制作的另一个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具有与其中一条路线相同的结构,但我有同样的错误。
任何想法?
答案 0 :(得分:1)
正如Christian所说,或者在身体上调用getMyId方法
<bean ref="myBean" method="bar(${body.myId})"/>
详情请见
答案 1 :(得分:0)
您可以在从MyDto转换为Long的路线中添加一个步骤。例如,使用这个方法的简单bean: Long getId(MyDto dto);
或者,当你打电话时,你可以简单地将一条龙放入路线中。
如果要在服务和路由之间共享MyDto,请确保将其与服务接口一起放在单独的捆绑中,以避免类加载问题。不要嵌入共享类/接口。