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 : D:/Code/eclipse/corba> |
参考:
windows平台下Ant+JacORB的安装和配置
http://nijiayi.bokee.com/571111.html