1
有很多文章描述瞭如何修改EJB方法參數不會傳遞給調用者。我通常通過將參數返回給調用者來解決此問題,以便將其重新分配給變量。修改遠程EJB方法中的參數
我的問題是,沒有一篇文章似乎描述了我應該在更復雜的方法中做什麼,我需要修改參數並返回一些值。我可以做一些包裝類,包含每個參數的屬性和實際的返回值,並返回包裝,但這對我來說似乎很笨拙。有更好的方法來完成這個嗎?
有很多文章描述瞭如何修改EJB方法參數不會傳遞給調用者。我通常通過將參數返回給調用者來解決此問題,以便將其重新分配給變量。修改遠程EJB方法中的參數
我的問題是,沒有一篇文章似乎描述了我應該在更復雜的方法中做什麼,我需要修改參數並返回一些值。我可以做一些包裝類,包含每個參數的屬性和實際的返回值,並返回包裝,但這對我來說似乎很笨拙。有更好的方法來完成這個嗎?
沒有其他辦法。
想象一下以下的方法:
Result doSomething(A arg1, B arg2, C arg3) {
...
}
由於您使用的遠程連接,因此調用你的EJB,客戶端將序列arg1
,arg2
和arg3
。此時,它們是全新的實例,說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'
。
我想我必須忍受這一點。我希望有一些說法可以說「發回這個參數並在調用者端替換實例」。 – 2014-09-04 09:56:42
我認爲,只要你離開JVM,這幾乎是不可能的 - 或者太多的問題太少,太小的好處。 – NoDataFound 2014-09-04 10:26:57