2014-09-04 30 views
1

有很多文章描述了如何修改EJB方法参数不会传递给调用者。我通常通过将参数返回给调用者来解决此问题,以便将其重新分配给变量。修改远程EJB方法中的参数

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

回答

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); 
} 

然后,容器会序列Result,和arg1'arg2'arg3',和呼叫者将接收包含arg1"arg2"arg3"Result'

+0

我想我必须忍受这一点。我希望有一些说法可以说“发回这个参数并在调用者端替换实例”。 – 2014-09-04 09:56:42

+0

我认为,只要你离开JVM,这几乎是不可能的 - 或者太多的问题太少,太小的好处。 – NoDataFound 2014-09-04 10:26:57