2010-09-15 27 views
0

我有一個應該返回項目列表的方法的接口,並且每個項目都應該有與之相關的某些方法。例如,我想定義一個方法listAllItems(),它返回一堆附有方法的「item」對象(所以我可以讓客戶端進程選擇其中一個項目並說itemone.buy(),例如,這將在服務器上執行相應的方法)。CORBA序列:我可以定義具有方法的對象序列嗎?

我可以在CORBA中做到這一點嗎?看來我不能定義「接口項」,然後在其他一些接口中說「序列」。

我會編譯我的idl到Java,如果它有所作爲。

謝謝!

回答

0

當然可以。

你必須提供更多細節,說明你爲什麼說它不適合你。但我經常使用包含一系列接口的IDL。

1

佩頓所需的信息,一個IDL序列和Java組類型之間的概念圖,可以物理頁42,索引頁23,這本手冊的上找到:

http://www.omg.org/spec/I2JAV/1.3/

並回答他的問題:顯然,即使您使用typedef,java實際上也沒有指定序列對象。當然歡迎您手動完成此操作。但是如果你想依靠idlj自動完成的工作,你將不得不使用<ObjectType> Helper.java中的方法。那些使用<ObjectType> []類型的簡單數組可以工作,並且包含getter和setter。

簡單:如果你的IDL包含

struct MyObject 
{ 
    long my_int; 
}; 
typedef sequence<MyObject> MyObjects; 
interface HasArray 
{ 
    attribute MyObjects some_stuff; 
}; 

那麼你的Java實現將需要:

public class HasArrayImpl extends HasArrayPOA 
{ 
    private List<MyObject> local_storage; 

    /** getter */ 
    MyObject[] some_stuff() 
    { 
    /* ... */ 
    } 

    /** setter */ 
    void some_stuff(MyObject[] newSome_stuff) 
    { 
    /* ... */ 
    } 
} 

而且引擎蓋下,爪哇將創造MyObjectsHelper和MyObjectsHolder你。

相關問題