我可以调用具有多个参数的 Apache Camel RMI 端点方法吗?
我调用的方法签名是:
public ReturnedVo methodSignature(String parm1, byte[] parm2)
Camel Route:
from("timer:myTimer?period=5000".routeId("TestRoute").process(new Processor() {
public void process(Exchange exchange) throws Exception{
exchange.getOut().setBody(???????);
}
}).to (uri)
在哪里 uri="rmi://serviceLocation?method=methodSignature"
当方法只有一个参数时,我能够使用相似的路由从同一服务调用不同的方法。我正在使用对象实例设置消息正文:exchange.getOut().setBody(instanceOfObject)
。
我调用的服务是 Weblogic 8.1 上的远程 EJB。
最佳答案
回答我自己的问题。以下是我为解决该问题所做的工作。
1) 修改了 uri: uri="rmi://serviceLocation?
method=methodSignature&multiParameterArray=true
2) 创建Object数组存放调用方法的参数:
Object [] body = new Object[] {"parm1", new byte[11]};
3) 将 camel 路由更改为使用 Object [] body:
from("timer:myTimer?period=5000").
routeId("TestRoute").
process(new Processor() {
public void process(Exchange exchange) throws Exception{
exchange.getOut().setBody(body);
}
}).
to (uri)
请注意,从 Camel 2.9 开始,有不同的解决方案。链接在这里 http://camel.465427.n5.nabble.com/bean-ejb-etc-how-to-set-parameters-td4375679.html
关于parameters - 使用多个参数调用 Apache Camel RMI 端点调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13653568/