我的 IDL 看起来像:
interface TransactionResource {
void prepare() raises (NotPreparedException);
void commit() raises(TransactionException);
void rollback() raises(TransactionException);
};
interface ManageDemand : TransactionResource {
string createDemand(in string demand);
};
interface CreateAccount : TransactionResource {
string createAccount(in string account);
};
我在服务器上创建ManageDemand分布式对象,使其持久化,并且可以通过CORBALOC地址访问它。
我想在客户端上创建一个通用方法来检测它是哪个资源(如果是 CreateAccount 或 manageDemand)。
public TransactionResource getResource(String url){
Object obj = orb.string_to_object(url.toString());
如果我必须使用 ManageDemandHelper 或 CreateAccountHelper 来缩小此对象范围,我该如何决定?
Ex: ManageDemand transactionResource = ManageDemandHelper.narrow(obj);
return transactionResource;
}
我找到了这个问题的响应。我只需要验证这一点:
if (obj._is_a("IDL:transaction/ManageDemand:1.0")){ .. }else if (obj._is_a("IDL:transaction/CreateAccount:1.0")){ .. }
– 萨阿德·拉马蒂 12 月 19 '13 在 12:48