首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CORBA + IDL + Java:编写servant需要帮助

CORBA + IDL + Java:编写servant需要帮助
EN

Stack Overflow用户
提问于 2010-12-02 06:50:17
回答 1查看 593关注 0票数 0

我有一个已定义的idl文件,如下所示:

代码语言:javascript
复制
module Banking {
    typedef string Transactions[5];
    typedef long AccountId;

    interface Account {
        exception InsufficientFunds {};

        readonly attribute double balance;
        long lodge(in double amount);
        long withdraw(in double amount) raises (InsufficientFunds);
        readonly attribute Transactions transactions;   
    };

    interface Bank {
        long accountCount();
        double totalMoney();
        Account account(in AccountId accNr);
    };
};

它是我用idlj编译的。我定义了一个BankServant,客户端使用它与服务器通信,并且我有一个工作程序,几乎所有的方法都实现了。我唯一的问题是,我不知道如何实现account(in AccountId accNr)方法,该方法将返回正确的Account对象。由于我不了解CORBA,我只是在帮助一个朋友,我想寻求一些解决方案/示例/教程,它们可能会帮助我破解一个简单但有效的类布局来处理这种情况。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-02 07:13:58

这实际上取决于您对POA (可移植对象适配器)使用的策略。假设您在服务器中使用RootPOA,则必须:

  1. 为Account对象创建一个实现对象。这通常称为AccountImplAccountServant,正如我在银行服务人员的名字中看到的那样。

AccountServant as = new AccountServant(accNr);

  • You必须在POA中注册对象。同样,这与您为POA选择的策略有关。使用默认根POA:

使用IDL编译器生成的AccountHelperAccount acc = AccountHelper.narrow(o);

  • Return it将其org.omg.CORBA.Object o = rootPOA.servant_to_reference( as );

  • Narrow为正确的Account类型。

return acc;

这段代码假设您已经为AccountServant java对象编写了一个构造函数,该构造函数接受帐号作为其第一个参数。您还必须向BankServant提供您希望在其中注册新创建的Account对象的POA的引用。

有很多教程。例如,参见this one,因为POA的选项集太多了,需要一本书来解释它们:)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4329952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档