Corba的第一个例子

原创 2004年08月05日 17:52:00

Corba第一个例子,VisiBroker实现

1、 编写接口Bank.idl

module Bank{

  interface Account{¢

     float balance();

  };

  interface AccountManager{

     Account open(in string name);

  };

};

2、idl2java命令编译Bank.idl

命令:idl2java Bank.idl

命令:javac -classpath c:/bdp/lib/vbjorb.jar *.java

会生成Bank文件夹及相关的Java文件,然后编译这些文件,c:/bdpVisiBroker的安装路径。

3、实现Server.java

import org.omg.PortableServer.*;

import Bank.*;

import java.util.*;

 

 

public class Server {

 

  public static void main(String[] args) {

    try {

      

      Properties properties=new Properties();

      properties.setProperty("vbroker.agent.addr", "localhost");

      properties.setProperty("vbroker.agent.port", "14000");

      properties.put("org.omg.CORBA.ORBClass", "com.inprise.vbroker.orb.ORB");

      properties.put("org.omg.CORBA.ORBSingletonClass", "com.inprise.vbroker.orb.ORBSingleton");

      properties.put("javax.rmi.CORBA.StubClass", "com.inprise.vbroker.rmi.CORBA.StubImpl");

      properties.put("javax.rmi.CORBA.UtilClass", "com.inprise.vbroker.rmi.CORBA.UtilImpl");

      properties.put("javax.rmi.CORBA.PortableRemoteObjectClass", "com.inprise.vbroker.rmi.CORBA.PortableRemoteObjectImpl");?????

      org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, properties);

      POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));

      org.omg.CORBA.Policy[] policies = {

           rootPOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT)

      };

      POA myPOA = rootPOA.create_POA( "bank_agent_poa", rootPOA.the_POAManager(),

                    policies );

      AccountManagerImpl managerServant = new AccountManagerImpl();

      byte[] managerId = "BankManager".getBytes();

      rootPOA.the_POAManager().activate();

    

     System.out.println(myPOA.servant_to_reference(managerServant) +

     " is ready.");

      orb.run();

      }

      catch (Exception e) {

      e.printStackTrace();

      }

      }

    

}

4、实现Client.java

import Bank.*;

import java.util.*;

 

public class Client {

  public static void main(String[] args) {

      Properties properties=new Properties();

      properties.setProperty("vbroker.agent.addr", "localhost");

      properties.setProperty("vbroker.agent.port", "14000");

      org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,properties);

      byte[] managerId = "BankManager".getBytes();

      Bank.AccountManager manager =

      Bank.AccountManagerHelper.bind(orb, "/bank_agent_poa", managerId);

      String name = args.length > 0 ? args[0] : " Tom ";

      Bank.Account account = manager.open(name);

      float balance = account.balance();

      System.out.println("The balance in " + name + "'s account is $" + balance);

   }

}

5、实现AccountImpl

import Bank.*;

 

public class AccountImpl extends Bank.AccountPOA {

  public AccountImpl(float balance) {

    _balance = balance;

  }

  public float balance() {

    return _balance;

  }

  private float _balance;

}

6、实现AccountManagerImpl

import org.omg.PortableServer.*;

import Bank.*;

 

import java.util.*;

 

public class AccountManagerImpl extends Bank.AccountManagerPOA {

  public synchronized Bank.Account open(String name) {

    Bank.Account account = (Bank.Account) _accounts.get(name);

    if(account == null) {

      float balance = Math.abs(_random.nextInt()) % 100000 / 100f;

      AccountImpl accountServant = new AccountImpl(balance);

      try {

        account = Bank.AccountHelper.narrow(_default_POA().servant_to_reference(accountServant));

      } catch (Exception e) {

        e.printStackTrace();

      }

      System.out.println("Created " + name + "'s account: " + account);

      _accounts.put(name, account);

    }

    return account;

  }

  private Dictionary _accounts = new Hashtable();

  private Random _random = new Random();

}

7、编译服务器与客户端

    javac *.java命令编译所有文件,生成class

命令:javac -classpath c:/bdp/lib/vbjorb.jar;. *.java

8、运行SmartAgent

    命令:osagent

9、运行服务器

    命令:vbj Server或者start vbj Serverstart用于开启一个新的窗口

10、运行客户端

命令:vbj Client

运行结果:The balance in Tom's account is $992.8,搞定。

 

CORBA技术及实例

CORBA是一种规范,它定义了分布式对象如何实现互操作。在WorldWideWeb盛行之前,特别是Java编程语言风靡之前,C++开发者基本将CORBA作为其高端分布式对象的解决方案。 实际的CORB...
  • johnny_83
  • johnny_83
  • 2007年07月25日 06:07
  • 1202

Java corba 实例

.NET 和 Java 在技术布局上非常类似,.NET 的远程调用经历了DCOM,.NET Remoting,最后是几乎成了.NET 平台SOA代名词的WCF.WCF的目标在于通过一种通用简单的协议来...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2015年01月23日 12:03
  • 1892

CORBA的简单介绍及HelloWorld

CORBA概述 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程 序体系规范。或...
  • DryKillLogic
  • DryKillLogic
  • 2014年05月16日 16:31
  • 11513

corba程序示例

不知道大家注意到没有,在JDK1.4编译idl文件时使用的 idlj -oldImplBase -fall Hello.idl 这个命令带有“-oldImplBase”参数,表示这是一个老版本的实现。...
  • sipsir
  • sipsir
  • 2007年11月25日 02:53
  • 1558

corba的使用,里边是一个例子,手把手教你corba使用

  • 2010年05月06日 00:10
  • 287KB
  • 下载

使用java和CORBA实现分布应用编程

因为课程的需要,学习了下用java和CORBA来实现分布应用编程,具体的CORBA是什么以及它的框架结构我就不多说了,这里我是给出一个比较完整的例子来展示下代码要怎么写。应用背景:使用java和COR...
  • ancientmoondjay
  • ancientmoondjay
  • 2017年05月07日 21:26
  • 699

软件架构之一 -------CORBA

CORBA、DCOM、WebService 一、公共对象请求代理体系结构   (CORBA)         CORBA(Common Object Request Broker Ar...
  • shuilaner_
  • shuilaner_
  • 2014年10月28日 23:21
  • 1134

开源CORBA OmniORB开发环境搭建及编译问题解决方法

利用omniORB编译corba应用程序 c++,该怎么解决 利用omniORB编译corba应用程序 c++ 知道的朋友都请进 最近在学corba,利用omniORB来编译应用程序,运行平台是...
  • u010171985
  • u010171985
  • 2016年04月24日 18:19
  • 675

CORBA的简单介绍及HelloWorld

CORBA概述 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程 序体系规范。或...
  • DryKillLogic
  • DryKillLogic
  • 2014年05月16日 16:31
  • 11513

Corba 学习笔记 (一)

背景:项目上使用到了CORBA这个古老的东东,所以需要学习一下。 CORBA的一些资料,童鞋们可以自己看,我就不贴在这里了 > http://baike.baidu.com/view/153815.h...
  • wssiqi
  • wssiqi
  • 2015年11月10日 21:52
  • 4557
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Corba的第一个例子
举报原因:
原因补充:

(最多只允许输入30个字)