[英]How can I return a java.lang.Object value to client on CORBA in my case?
我正在開發Corba應用程序。 我的IDL界面如下所示:
interface Transaction {
???????? addResource(in TransactionResource resource);
};
我希望當客戶端為事務引用對象調用addResource方法時,該方法可以將Proxy.newProxyInstance(....)的返回值返回給客戶端。
addResource實現的示例:
public ?????? addResource(TransactionResource resource) {
// creation of a proxy.
java.lang.Object o = Proxy.newProxyInstance(ManageDemand.class.getClassLoader() , new Class[] {ManageDemand.class}, new MyInvocationHandler());
return o;
}
我想將“ o”還給客戶,我該怎么辦?
addResource()方法的返回值的類型是什么? 是org.omg.CORBA.Object嗎? 還是其他類型?
我認為您無法以正常方式做到這一點。
根據我的理解,CORBA的想法是,它定義了內部消息表示形式,該表示形式與平台無關(因此具有跨平台互操作性)。 試想一下,如果它允許您提供一個任意的Java對象,並且如果接收方是C ++,那么如何將其轉換為C ++表示形式呢?
簡而言之,您可以簡單地使用在IDL中定義的結構,並且如果您真的想返回任意對象,那么CORBA可能不是您想要的。 考慮一下RMI之類的東西。
如果您確實需要這樣做,我相信唯一的方法是自己進行序列化/反序列化,然后將“對象”作為八位位組序列或字符串返回。 但是,您需要注意,對象接收器仍然是對象的單獨實例(因此是對象周圍的代理)。 如果這些代理的工作需要服務器端的資源,那么我認為您需要重新考慮您的設計。 我認為沒有任何解決方案可以通過這種方式神奇地將遠程對象與服務器端對象鏈接起來。
您應該返回java.lang.Object
類型,然后在客戶端將其回退。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.