我有一個應該返回項目列表的方法的接口,並且每個項目都應該有與之相關的某些方法。例如,我想定義一個方法listAllItems(),它返回一堆附有方法的「item」對象(所以我可以讓客戶端進程選擇其中一個項目並說itemone.buy(),例如,這將在服務器上執行相應的方法)。CORBA序列:我可以定義具有方法的對象序列嗎?
我可以在CORBA中做到這一點嗎?看來我不能定義「接口項」,然後在其他一些接口中說「序列」。
我會編譯我的idl到Java,如果它有所作爲。
謝謝!
我有一個應該返回項目列表的方法的接口,並且每個項目都應該有與之相關的某些方法。例如,我想定義一個方法listAllItems(),它返回一堆附有方法的「item」對象(所以我可以讓客戶端進程選擇其中一個項目並說itemone.buy(),例如,這將在服務器上執行相應的方法)。CORBA序列:我可以定義具有方法的對象序列嗎?
我可以在CORBA中做到這一點嗎?看來我不能定義「接口項」,然後在其他一些接口中說「序列」。
我會編譯我的idl到Java,如果它有所作爲。
謝謝!
當然可以。
你必須提供更多細節,說明你爲什麼說它不適合你。但我經常使用包含一系列接口的IDL。
佩頓所需的信息,一個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你。