JacORB编程(1)


一、使用到的软件
JacORB 2.3
Eclipse SDK 3.2.2
JDK5 1.5.0_11
ORB Studio 7.7.7

使用的系统为Windows XP SP2。版本号可能不一定要完全按照上面,但是如果你配置成功不了,不妨就按上面来弄。

二、为eclipse安装corba开发插件。
ORB Studio是开发corba的插件,用于eclipse。

安装其实很简单,把ORBStudio_7.7.7.jar文件拷贝到eclipse的plugins目录。

三、安装JacORB,生成jaco.bat

(1)安装
解压JacORB-2.3.0-bin.zip到D:/JavaTools,JacORB的根目录为JacORB-2.3.0。

(2)生成jaco.bat,这个脚本用来启动服务端和客户端程序。
进入D:/JavaTools/JacORB-2.3.0,执行下列的命令
set ANT_HOME=D:/JavaTools/apache-ant-1.7.0
set CLASSPATH=%ANT_HOME%/lib/ant.jar;
set PATH=%PATH%;%ANT_HOME%/bin;
ant jaco

就可以生成jaco.bat,自己编写一个也可以,只要改掉里面的路径。
######################################################
@echo off
rem call java interpreter
java -Djava.endorsed.dirs=D:/JavaTools/JacORB-2.3.0/lib -Djacorb.home=D:/JavaTools/JacORB-2.3.0 -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -

Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton -classpath %CLASSPATH% %*
######################################################

四、在eclipse里面配置ORB Studio和JacORB。
在eclipse的菜单栏中,选【windows】->[preferences]->[ORB Studio]->[IDL Compiler],选中JacORB。
然后展开[IDL Compiler],设置JacORB的IDL Command和Command Options。

默认参数是:
IDL Command:java
Command Options:-cp "/Tools/JacORB/lib/idl.jar;/Tools/JacORB/lib/logkit-1.2.jar" org.jacorb.idl.parser -d %D% %F%

第二个参数要设置成正确的路径。
-cp "D:/JavaTools/JacORB-2.3.0/lib/idl.jar;D:/JavaTools/JacORB-2.3.0/lib/logkit-1.2.jar" org.jacorb.idl.parser -d %D% %F%


五、corba程序示例
在D:/JavaTools/JacORB-2.3.0/demo取一个简单的例子hello
以下操作在eclipse中进行。
1、建立一个IDL文件,如demo.idl
module demo
{
    module hello {
        interface GoodDay {
            string hello_latin1();
            wstring hello_chinese();           
        };
    };
};

2、右键点击demo.idl文件,选[ORB Menu]->[Compile],会生成demo.hello包,里面包含7个自动生成的文件
_GoodDayStub.java
GoodDay.java
GoodDayHelper.java
GoodDayHolder.java
GoodDayOperations.java
GoodDayPOA.java
GoodDayPOATie.java

3、实现demo.idl文件hello模块中GoodDay接口,手动创建GoodDayImpl.java文件
package demo.hello;

public class GoodDayImpl extends GoodDayPOA {

 public String hello_chinese() {
  // TODO Auto-generated method stub
  return "你好, 世界";
 }

 public String hello_latin1() {
  // TODO Auto-generated method stub
  return "Hello, World";
 }
}

4、创建Server和Client(服务器端和客户端)程序
Server.java
//
package demo.hello;

import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;

public class Server {
 public static void main(String[] args) {
  try {
   ORB orb = ORB.init(args, null); // 初始化 ORB
   
   POA poa = POAHelper.narrow(orb
     .resolve_initial_references("RootPOA")); // 初始化 POA

   poa.the_POAManager().activate();

   // 创建一个 GoodDay 对象
   GoodDayImpl goodDayImpl = new GoodDayImpl();

   // 创建 GoodDay 对象的引用
   org.omg.CORBA.Object obj = poa.servant_to_reference(goodDayImpl);

   // 使用 naming service
   NamingContextExt nc = NamingContextExtHelper.narrow(orb
     .resolve_initial_references("NameService"));
   
   nc.bind(nc.to_name("hello.goodDay"), obj); // 绑定对象

   orb.run();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

Client.java
//
package demo.hello;

import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;

public class Client {
 public static void main(String[] args) {
  try{
   GoodDay goodDay;
   
   ORB orb = ORB.init(args, null); // 初始化 ORB
   
   // 使用 naming service
   NamingContextExt nc = NamingContextExtHelper.narrow(orb
     .resolve_initial_references("NameService"));
   org.omg.CORBA.Object obj = nc.resolve(nc.to_name("hello.goodDay")); //解析对象
   
   goodDay = GoodDayHelper.narrow(obj); //转换
   
   // GoodDay 接口调用
   System.out.println(goodDay.hello_latin1());
   System.out.println(goodDay.hello_chinese());
  }catch(Exception e) {
   e.printStackTrace();
  }
 }
}

5、运行程序
(1)运行JacORB的ns
先把jacorb_properties.template文件另存为jacorb.properties,且把下面两行
#ORBInitRef.NameService=file:/c:/NS_Ref
ORBInitRef.NameService=http://www.x.y.z/~user/NS_Ref
改为
ORBInitRef.NameService=file:/c:/NS_Ref
#ORBInitRef.NameService=http://www.x.y.z/~user/NS_Ref

注意:
ORBInitRef.NameService=file:/d:/NS_Ref
设成D盘或E盘死活不行。

先设置环境变量
======================================================
set JacORB_HOME=D:/JavaTools/JacORB-2.3.0
set CLASSPATH=.;%JacORB_HOME%/lib/idl.jar;%JacORB_HOME%/lib/jacorb.jar;%JacORB_HOME%/lib/logkit-1.2.jar;
set PATH=%PATH%;%JacORB_HOME%/bin;

======================================================

ns

(2)运行Server和Client
进入代码目录demo的上级目录(例如:cd D:/Code/eclipse/corba),在运行之前,参照(1)设置环境变量,然后运行下面的代码

jaco demo.hello.Server

jaco demo.hello.Client

 在命令行程序中的输出信息

 

ns.bat

demo.hello.Server

demo.hello.Client

ns运行[jacorb.orb.print_ver] INFO :
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        JacORB V 2.3.0,
www.jacorb.org
        (C) The JacORB project 17-Feb-2007
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[jacorb.orb] INFO : Property "jacorb.hashtable_class" is set to: java.util.Hasht
able
[org.jacorb.orb.codes] WARN : Warning - unknown codeset (GBK) - defaulting to IS
O-8859-1
[jacorb.orb.intercept] INFO : InterceptorManager started with 0 Server Intercept
ors, 0 Client Interceptors and 1 IOR Interceptors
[jacorb.orb.singleton] INFO : created ORBSingleton
[jacorb.naming] INFO : NS up
[jacorb.orb] INFO : ORB run
  
Server运行[jacorb.orb.iiop] INFO : Opened new server-side TCP/IP transport to 172.21.88.88
:4079
[jacorb.poa] INFO : oid:
5F 72 6F 6F 74                                              _root
incarnate
[jacorb.poa] INFO : oid:
5F 72 6F 6F 74                                              _root
object is activated
[jacorb.orb.giop] INFO : ClientConnectionManager: created new ClientGIOPConnecti
on to 172.21.88.88:4068 (5e179a)
[jacorb.orb.iiop] INFO : Retrying to connect to 172.21.88.88:4068
[jacorb.orb.iiop] INFO : Retrying to connect to 172.21.88.88:4068
[jacorb.orb.iiop] INFO : Retrying to connect to 172.21.88.88:4068
[jacorb.orb.iiop] INFO : Retrying to connect to 172.21.88.88:4068
[jacorb.orb.iiop] INFO : Retrying to connect to 172.21.88.88:4068
[jacorb.naming] INFO : re-Bound name: hello.goodDay
[jacorb.orb.print_ver] INFO :
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        JacORB V 2.3.0,
www.jacorb.org
        (C) The JacORB project 17-Feb-2007
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[jacorb.orb] INFO : Property "jacorb.hashtable_class" is set to: java.util.Hasht
able
[org.jacorb.orb.codes] WARN : Warning - unknown codeset (GBK) - defaulting to IS
O-8859-1
[jacorb.orb.intercept] INFO : InterceptorManager started with 0 Server Intercept
ors, 0 Client Interceptors and 1 IOR Interceptors
[jacorb.poa] INFO : oid:
00 15 0D 1B 0C 1F 18 0A 01 22 03                            .........".
object is activated
[jacorb.poa] INFO : Using server ID (7566609852) for transient POA
[jacorb.orb.singleton] INFO : created ORBSingleton
[jacorb.orb.giop] INFO : ClientConnectionManager: created new ClientGIOPConnecti
on to 172.21.88.88:4077 (861f24)
[jacorb.orb.iiop] INFO : Connected to 172.21.88.88:4077 from local port 4079
[jacorb.orb] INFO : ORB run
 
Client运行[jacorb.orb.iiop] INFO : Opened new server-side TCP/IP transport to 172.21.88.88
:4086
[jacorb.orb.iiop] INFO : Closed server-side transport to 172.21.88.88:4086
[jacorb.orb.iiop] INFO : Opened new server-side TCP/IP transport to 172.21.88.88
:4087
[jacorb.orb.iiop] INFO : Closed server-side transport to 172.21.88.88:4087

[jacorb.orb.print_ver] INFO :
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        JacORB V 2.3.0,
www.jacorb.org
        (C) The JacORB project 17-Feb-2007
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[jacorb.orb] INFO : Property "jacorb.hashtable_class" is set to: java.util.Hasht
able
[org.jacorb.orb.codes] WARN : Warning - unknown codeset (GBK) - defaulting to IS
O-8859-1
[jacorb.orb.intercept] INFO : InterceptorManager started with 0 Server Intercept
ors, 0 Client Interceptors and 1 IOR Interceptors
[jacorb.orb.singleton] INFO : created ORBSingleton
[jacorb.orb.giop] INFO : ClientConnectionManager: created new ClientGIOPConnecti
on to 172.21.88.88:4077 (184ec44)
[jacorb.orb.iiop] INFO : Connected to 172.21.88.88:4077 from local port 4086
[jacorb.orb.giop] INFO : ClientConnectionManager: created new ClientGIOPConnecti
on to 172.21.88.88:4078 (1b4fad5)
[jacorb.orb.iiop] INFO : Connected to 172.21.88.88:4078 from local port 4087
Hello, World
你好, 世界

D:/Code/eclipse/corba>

参考:
windows平台下Ant+JacORB的安装和配置
http://nijiayi.bokee.com/571111.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值