Corba的第一个例子

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

Corba第一个例子,VisiBroker实现<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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 / <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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,搞定。

 

Java corba 实例

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

CORBA的简单介绍及HelloWorld

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

使用OmniORB出现的一些问题及已实现的解决方法

我是从自己的实际经历中得出的。也许应用到别的环境里未必可行。 现介绍下当时的实验环境:omniORB4.1.2+VS2005+Mysql5.0,语言是c++,MFC界面。 问题1.编译后显示——fat...
  • susaijie
  • susaijie
  • 2009-04-11 11:08:00
  • 1113

omniORB笔记

omniORB笔记12007-08-30 16:33资料来源:omniORB4.07库自带我的英文很差,要翻译和理解doc下一堆英文很有挑战性。一些简单说明:omniORB是CORBA(公用对象代理体...
  • xjh_Love_paopao
  • xjh_Love_paopao
  • 2008-12-08 17:09:00
  • 916

corba程序示例

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

Corba的第一个例子

Corba第一个例子,VisiBroker实现1、 编写接口Bank.idlmodule Bank{  interface Account{¢     float balance();  };  in...
  • jollibee
  • jollibee
  • 2004-08-05 17:52:00
  • 2025

<em>corba</em>中文教程及示例

<em>CORBA</em>规范是由OMG对象管理组提出的应用软件体系结构和对象技术规范,其核心是一套标准的语言、接口和协议,以支持异构分布应用程序间的互操作及独立于平台和编程语言的...
  • 2018年04月06日 00:00

corba程序源代码

  • 2007年12月28日 17:51
  • 194KB
  • 下载

Java&CORBA编程实例

Java&CORBA编程实例 Java IDL技术在Java平台上添加了CORBA(Common Object Request Broker Architecture)功能,提供了基于标准的互操作能力...
  • chszs
  • chszs
  • 2009-07-16 13:45:00
  • 5252

<em>corba</em>程序源代码

EJB与<em>CORBA</em>的交互<em>例子</em>,及源代码 立即下载 上传者: 勾月QQ223857666 时间: 2011-11-05 综合评分: 0 积分/C币:3 <em>corba</em>程序源代码 立即下载 上传者: whoan...
  • 2018年04月09日 00:00
收藏助手
不良信息举报
您举报文章:Corba的第一个例子
举报原因:
原因补充:

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