修改远程EJB方法中的参数

时间:2014-09-04 07:12:36

标签: java ejb

有很多文章描述了如何不将EJB方法参数的修改传递给调用者。我通常通过将参数返回给调用者来解决这个问题,因此可以将其重新赋值给变量。

我的问题是,没有一篇文章似乎描述了我应该在更复杂的方法中做什么,我需要修改参数并返回一些值。我可以创建一些包含每个参数的属性和实际返回值的包装类,并返回包装器,但这对我来说似乎非常笨拙。有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

没有别的办法。

想象一下以下方法:

Result doSomething(A arg1, B arg2, C arg3) { 
  ...
}

因为您使用远程连接调用EJB,所以客户端将序列化arg1arg2arg3。此时,它们是全新的实例,例如arg1'arg2'arg3'

它们甚至可能不在同一个JVM上,如果是,那么你不应该依赖它(某些EJB容器在确定调用者和被调用者在同一个JVM中时使用引用)。

返回Result,更新那些argN'是唯一的方法:

Result doSomething(A arg1, B arg2, C arg3) {
  ...      
  return new Result(arg1, arg2, arg3);
}

然后容器将序列化Resultarg1'arg2'arg3',并且来电者将收到包含Result'的{​​{1}}, arg1"arg2"