⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accountmanagerimpl.java

📁 CORBA分布式编程一个简单实例
💻 JAVA
字号:
// 账户管理员对象的具体实现
import java.util.*;
import org.omg.PortableServer.*;

public class AccountManagerImpl extends Bank.AccountManagerPOA {
    // 属性定义
    protected Map accountList;        // 该账户管理员所负责的账户清单

    // 构造方法,管理员开始时管理的账户清单为空
    public AccountManagerImpl() {
        accountList = new HashMap();
    }
    // 查找指定名字的账户,找不到则以该名字新开一个账户
    public synchronized Bank.Account open(String name) {
        // 在账户清单中查找指定名字的账户
        Bank.Account account = (Bank.Account) accountList.get(name);
        // 如果不存在则新创建一个
        if (account == null) {
            // 随机虚构账户的初始余额,金额在0至1000之间
            Random random = new Random();
            float balance = Math.abs(random.nextInt()) % 100000 / 100f;
            // 按指定余额创建账户的伺服对象
            AccountImpl accountServant = new AccountImpl(balance);
            try {
                // 用默认的POA激活伺服对象,这里默认的POA就是根POA
                org.omg.CORBA.Object obj = _default_POA().servant_to_reference(accountServant);
                // 将对象引用收窄为账户类型
                account = Bank.AccountHelper.narrow(obj);
            } catch(Exception exc) {
                exc.printStackTrace();
            }
            // 将账户保存到账户清单中
            accountList.put(name, account);
            // 在服务端控制台打印已创建新账户的提示信息
            System.out.println("新开账户:" + name);
        }
        // 返回找到的账户或新开设的账户
        return account;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -