博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CreditCompany
阅读量:4685 次
发布时间:2019-06-09

本文共 6769 字,大约阅读时间需要 22 分钟。

CreditCompanyConn

ExpandedBlockStart.gif
View Code
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/
import creditcompany.BankCreditInterface;
import creditcompany.BankCreditInterfaceHelper;
import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
/**
 *
 * 
@author
 iltaek (Rize Jin, 2012-05-22)
 
*/
public 
class CreditCompanyConn {
    
        
    
//
终于成功了!!!!!!!!!!!!
    
//
先是将连接的代码单独放入一个 CreditCompanyConn 类里, 设置一个静态变量,设置一个函数去连接 银行信用卡servant
    
//
在 信用卡公司服务器 端呼叫连接函数,
    
//
在 信用卡公司servant 端声明并访问 bankCreditServer 静态属性,并用它来获取 银行信用卡servant 的服务
    
public 
static BankCreditInterface bankCreditServer;
    
    
public 
void callBankCreditServant(String args[]) {
            
        
        
try {
            ORB orb = ORB.init(args, 
null);
            org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
            NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
            String serverName = "BankCredit";
            bankCreditServer = BankCreditInterfaceHelper.narrow(ncRef.resolve_str(serverName));
            System.out.println("Obtained a handle on server object: " + bankCreditServer);
            
//
runClientUI(bankCreditServer);
        } 
catch (Exception e) {
            System.out.println("ERROR : " + e);
            e.printStackTrace(System.out);
        }
    }
    
}

 

 CreditCompany

 

ExpandedBlockStart.gif
View Code
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/
import creditcompany.BankCreditInterface;
import creditcompany.BankCreditInterfaceHelper;
import creditcompany.CreditCompanyInterface;
import creditcompany.CreditCompanyInterfaceHelper;
import org.omg.CORBA.ORB;
import org.omg.CORBA.ORBPackage.InvalidName;
import org.omg.CosNaming.NameComponent;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
import org.omg.CosNaming.NamingContextPackage.CannotProceed;
import org.omg.CosNaming.NamingContextPackage.NotFound;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
/**
 *
 * 
@author
 iltaek (Rize Jin, 2012-05-20)
 
*/
public 
class CreditCompany {
  
public 
static 
void main(String args[]) {
      
try{
            
//
终于成功了!!!!!!!!!!!!
            
//
先是将连接的代码单独放入一个 CreditCompanyConn 类里, 设置一个静态变量,设置一个函数去连接 银行信用卡servant
            
//
在 信用卡公司服务器 端呼叫连接函数,
            
//
在 信用卡公司servant 端声明并访问 bankCreditServer 静态属性,并用它来获取 银行信用卡servant 的服务
            CreditCompanyConn conn;
            conn = 
new CreditCompanyConn();
            conn.callBankCreditServant(args);
                   
            
        
/*
        // Retrieve an instance of BankCreditInterface from the name service (after BankServer has registered it)
        // 获取一个实体,很大胆
        BankCreditInterface bankCreditServer;
        try {
            ORB orb_0 = ORB.init(args, null);
            org.omg.CORBA.Object objRef_0 = orb_0.resolve_initial_references("NameService");
            NamingContextExt ncRef_0 = NamingContextExtHelper.narrow(objRef_0);
            String serverName_0 = "BankCredit";
            bankCreditServer = BankCreditInterfaceHelper.narrow(ncRef_0.resolve_str(serverName_0));
            System.out.println("Obtained a handle on server object: " + bankCreditServer);
            //runClientUI(bankCreditServer);
        } catch (InvalidName | NotFound | CannotProceed | org.omg.CosNaming.NamingContextPackage.InvalidName e) {
            System.out.println("ERROR : " + e);
            e.printStackTrace(System.out);
        }  
        //一直到这里
      
*/
      
      
      
//
 create and initialize the ORB
      ORB orb = ORB.init(args, 
null);
      
//
 get reference to rootpoa & activate the POAManager
      POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
      rootpoa.the_POAManager().activate();
      
      
//
 BankClientServantcreate servant and register it with the ORB
      CreditCompanyServant servant = 
new CreditCompanyServant();
      
//
 get an object reference based on the servant implementation.
      
//
 The object reference must be narrowed to the correct type, in this case Hello.
      org.omg.CORBA.Object ref = rootpoa.servant_to_reference(servant);
      CreditCompanyInterface href = CreditCompanyInterfaceHelper.narrow(ref);
      
      
//
 get reference of the root naming context.
      
//
 NameService invokes the name service
      org.omg.CORBA.Object objRef =
          orb.resolve_initial_references("NameService");
      
//
 Use NamingContextExt which is part of the Interoperable
      
//
 Naming Service (INS) specification.
      NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
      
//
 register the CORBA object reference to the naming service with
      
//
 name "Hello". Client must search the object using the same name.
      String name = "CreditCompany";
      NameComponent path[] = ncRef.to_name( name );
      ncRef.rebind(path, href);
      System.out.println("Credit Company Server ready and waiting ...");
      
//
 wait for invocations from clients
      orb.run();
    } 
    
      
catch (Exception e) {
        System.err.println("ERROR: " + e);
        e.printStackTrace(System.out);
      }
      
      System.out.println("Credit Company Server Exiting ...");
    
  }
}

 

 CreditCompanyServant

 

 

ExpandedBlockStart.gif
View Code
import creditcompany.*;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.omg.CORBA.ORB;
import org.omg.CORBA.ORBPackage.InvalidName;
import org.omg.CosNaming.NameComponent;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
import org.omg.CosNaming.NamingContextPackage.CannotProceed;
import org.omg.CosNaming.NamingContextPackage.NotFound;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/
/**
 *
 * 
@author
 iltaek (Rize Jin, 2012-05-21)
 
*/
public 
class CreditCompanyServant 
extends CreditCompanyInterfacePOA{
    
    
//
HashMap<String, String> mapping = ;
    
//
HashMap<String, Double> accountEntry = ;  
    
    
    
    
//
终于成功了!!!!!!!!!!!!
    
//
先是将连接的代码单独放入一个 CreditCompanyConn 类里, 设置一个静态变量,设置一个函数去连接 银行信用卡servant
    
//
在 信用卡公司服务器 端呼叫连接函数,
    
//
在 信用卡公司servant 端声明并访问 bankCreditServer 静态属性,并用它来获取 银行信用卡servant 的服务
    
    BankCreditInterface bankCreditServer = CreditCompanyConn.bankCreditServer;
    
    String userAccount;
    
boolean returnValue = 
false;
    
double creditLimit = 1000;
    
   
    
    @Override
    
public 
boolean creditTransaction(String creditCard, String shopAccount, 
double amount) 
throws creditCardNotExists, noMatchAccount, accountNotExist, invalidValue, exceedCreditLimit {
        
        
/*
        System.out.println("+++++++ 0 " + AccountCreditMap.mappingEntry.size());
        // check if the account exists already
        
        
        
        if(!AccountCreditMap.mappingEntry.containsKey(creditCard))
            throw new creditCardNotExists();
        
        System.out.println("+++++++ 1");
        // check if the account exists already
        if(!Account.accountEntry.containsKey(shopAccount))
            throw new accountNotExist();
        System.out.println("+++++++ 2");
        // check if the amount is invalid
        if(amount < 0)
            throw new invalidValue();
        System.out.println("+++++++ 3");
        // check if there is enough money
        //userAccount = mapping.get(creditCard);
        * 
        
*/
        
if(bankCreditServer.balance(creditCard) - amount + creditLimit < 0)
                
throw 
new exceedCreditLimit();
        
        
        returnValue = bankCreditServer.transfer(creditCard, shopAccount, amount);
        
return returnValue;
          
        
    }
    
}

 

 

转载于:https://www.cnblogs.com/jinrize/archive/2012/05/22/2513507.html

你可能感兴趣的文章
angualrJS学习入门记录
查看>>
javascript编写一个简单的编译器(理解抽象语法树AST)
查看>>
git的介绍和配置
查看>>
require和require.async的区别
查看>>
ios开发瀑布流框架的应用
查看>>
团队项目 进展
查看>>
简单的NHibernate helper类,支持同一事务的批量数据处理
查看>>
导出数据库指定表所有数据
查看>>
C 语言 习题 1-14
查看>>
密码锁
查看>>
Android创建与读取Excel
查看>>
AVL树-查找-插入
查看>>
Codeforces 600E Lomsat gelral(dsu on tree)
查看>>
生成验证码语法(旧版)
查看>>
优化以及bug
查看>>
Factorial Trailing Zeroes
查看>>
daomain
查看>>
C pointers和Java references 的区别
查看>>
理解MapReduce
查看>>
[Golang] GoConvey测试框架使用指南
查看>>