- 浏览: 156950 次
- 性别:
- 来自: 北京
最新评论
-
yeluowuhen:
qindongliang1922 写道shell也行,不仅仅用 ...
每天一道编程题(4) -
qindongliang1922:
shell也行,不仅仅用awk
每天一道编程题(4) -
水土第一:
文不对题,你的隐藏域呢
JSP处理隐藏域表单
1. 准备工作
1) 下载安装Jacorb2.1
从http://www.jacorb.org/download.html下载JacORB_2.3.0_beta2-bin.zip(http://www.jacorb.org/releases/2.1/JacORB_2_1-full.tar.gz),解压缩到磁盘上,例如C:\JacORB
2) 设置相关的环境
为了在调试时可以找到有关包和jacorb.properties配置文件,
在系统环境变量中设置 JACORB_HOME=C:\JacORB,然后再设置classpath=.;%JACORB_HOME%\lib\idl.jar;%JACORB_HOME%\lib\jacorb.jar;%JACORB_HOME%\lib\logkit-1.2.jar;%JACORB_HOME%\lib\avalon-framework-4.1.5.jar;%JACORB_HOME%\classes;
然后设置PATH=%JACORB_HOME%\bin;
把C:\JacORB\etc目录下的jacorb_properties.template复制到C:\JacORB\classes目录下,并更名为jacorb.properties。
2. 命名服务配置
1)修改配置文件
在Corba中命名服务是非常重要的, 编辑jacorb.properties文件,设置其中的
ORBInitRef.NameService=file:/c:/NS_Ref(这里是示例,当然可以为任何httpURL或者其他路径),这个NS_Ref文件会在启动命名服务时生成.该配置文件其余部分保留默认值即可.
2) 测试命名服务(NS,Naming Service)是否可以正常启动
在dos窗口下输入
ns c:/NS_Ref
如果出现下面的输出说明已经正常启动
[configuration loaded from classpath resource file:/C:/JacORB_2_1classesjacorb.properties]
JacORB V 2.1, www.jacorb.org
(C) Gerald Brose, XTRADYNE TechnologiesFU Berlin, 16-Feb-2004
[jacorb.orb.intercept] INFO : InterceptorManager started with 0 SIs, 0 CIs and 1
IORIs
[jacorb.naming] INFO : NS up
[jacorb.orb] INFO : ORB run
如果没有任何输出,可能是由于你的jacorb.properties文件没有放到classpath所在的目录下。
如果没有正确启动NS,运行下面的demo时会出现下面的异常
[jacorb.orb.intercept] INFO : InterceptorManager started with 0 SIs, 0 CIs and 1 IORIs
....
[jacorb.giop] INFO : ClientConnectionManager: created new conn to target 192.168.4.161:4089
[jacorb] ERROR : java.net.ConnectException : Connection refused: connect
3 示例
1、在C:\JacORB的demo文件夹下建立一个book子目录,在book下建立一个IDL文件,如book.idl
2、编译idl文件,有三种方法:利用elcipse的ORB Studio插件直接编译,自动生成7个文件;或者使用ant工具包,或者使用jacorb的idl命令,本例用ant工具实现。利用ant实现时需要修改build.xml文件,改写后为:
执行ant的过程如下:
正确启动NS后,DOS窗口转到demo/book目录下执行ant (如果ant没有安装则不会编译)
C:\JacORB\demo\book > ant
这样会进行idl编译book.idl文件,在C:\JacORB\demo\book\generated下生成corba所需的源文件
同时,ant会编译所有的java源文件, C:\JacORB\classes下面生成.class文件
3、实现book.idl文件hello模块中BookInf接口,手动创建BookImp.java文件
4、创建Server和Client(服务器端和客户端)程序
===================Server.java===========================
===================Client.java===========================
5、运行程序
本地调用:
运行JacORB的ns,在DOS下输入ns c:\NS_Ref,打开服务。
这时ns把服务的信息写在了c:\NS_Ref文件里
运行Server和Client
另外打开两个命令窗口,分别运行jaco MyServer.hello.Server及jaco MyServer.hello.Client,即可看到客户端的书目信息列表。
参考资料:配置JacORB及ORB Studio:http://blog.csdn.net/soda7/archive/2008/05/19/2457795.aspx
利用ant工具:http://hi.baidu.com/riffling/blog/item/27fee911fb7cc116b8127b39.html
心得:Corba花了差不多有三天时间吧,一天半用来配置环境,一天半用来找bug,在idl语言中,如果是汉语的话不能使用string类型,而是wstring,本来想将选好的书目列表也封装进去,然后在客户端显示,但是不知道IDL语言中数组怎么使用,只好将就完成作业了。现在所实现的功能,和HelloWorld有一拼,幼稚呀!
而且Corba的实现机制也没有搞懂,就像EJB的作业一样,先记在这儿,写完报告再研究(希望可以)。
A JA Fighting!
ps:刚才TJ打电话叫实习,去还是不去呢?1K有点少了,时间还长,而且关键不知道能不能学到东东,怎么办?又没有别的公司可去,纠结~有大侠指引吗?呵呵呵~大侠不会看这么弱智的东东吧
1) 下载安装Jacorb2.1
从http://www.jacorb.org/download.html下载JacORB_2.3.0_beta2-bin.zip(http://www.jacorb.org/releases/2.1/JacORB_2_1-full.tar.gz),解压缩到磁盘上,例如C:\JacORB
2) 设置相关的环境
为了在调试时可以找到有关包和jacorb.properties配置文件,
在系统环境变量中设置 JACORB_HOME=C:\JacORB,然后再设置classpath=.;%JACORB_HOME%\lib\idl.jar;%JACORB_HOME%\lib\jacorb.jar;%JACORB_HOME%\lib\logkit-1.2.jar;%JACORB_HOME%\lib\avalon-framework-4.1.5.jar;%JACORB_HOME%\classes;
然后设置PATH=%JACORB_HOME%\bin;
把C:\JacORB\etc目录下的jacorb_properties.template复制到C:\JacORB\classes目录下,并更名为jacorb.properties。
2. 命名服务配置
1)修改配置文件
在Corba中命名服务是非常重要的, 编辑jacorb.properties文件,设置其中的
ORBInitRef.NameService=file:/c:/NS_Ref(这里是示例,当然可以为任何httpURL或者其他路径),这个NS_Ref文件会在启动命名服务时生成.该配置文件其余部分保留默认值即可.
2) 测试命名服务(NS,Naming Service)是否可以正常启动
在dos窗口下输入
ns c:/NS_Ref
如果出现下面的输出说明已经正常启动
[configuration loaded from classpath resource file:/C:/JacORB_2_1classesjacorb.properties]
JacORB V 2.1, www.jacorb.org
(C) Gerald Brose, XTRADYNE TechnologiesFU Berlin, 16-Feb-2004
[jacorb.orb.intercept] INFO : InterceptorManager started with 0 SIs, 0 CIs and 1
IORIs
[jacorb.naming] INFO : NS up
[jacorb.orb] INFO : ORB run
如果没有任何输出,可能是由于你的jacorb.properties文件没有放到classpath所在的目录下。
如果没有正确启动NS,运行下面的demo时会出现下面的异常
[jacorb.orb.intercept] INFO : InterceptorManager started with 0 SIs, 0 CIs and 1 IORIs
....
[jacorb.giop] INFO : ClientConnectionManager: created new conn to target 192.168.4.161:4089
[jacorb] ERROR : java.net.ConnectException : Connection refused: connect
3 示例
1、在C:\JacORB的demo文件夹下建立一个book子目录,在book下建立一个IDL文件,如book.idl
/* * This idl file is generated by the ORB Plugin */ module MyServer { module hello { interface BookInf{ wstring bookDB(); }; }; };
2、编译idl文件,有三种方法:利用elcipse的ORB Studio插件直接编译,自动生成7个文件;或者使用ant工具包,或者使用jacorb的idl命令,本例用ant工具实现。利用ant实现时需要修改build.xml文件,改写后为:
<?xml version="1.0"?> <!DOCTYPE project [ <!ENTITY common SYSTEM "file:../../etc/common.xml"> ]> <project name="demo" default="all" basedir="../.."> <!-- ==================================================== --> <!-- Demo build file --> <!-- ==================================================== --> &common; <target name="myinit"> <property name="name" value="book"/> <property name="dirs.base" value="${basedir}"/> <property name="classdir" value="${dirs.base}/classes"/> <property name="lib" value="${dirs.base}/lib"/> <property name="include" value="${dirs.base}/idl/omg"/> <property name="dest" value="${dirs.base}/demo/${name}/generated"/> </target> <target name="all" depends="myinit,idl"> <javac srcdir="${dest}" destdir="${classdir}" classpath="${dirs.base}/classes" includes="**/*.java" /> <javac srcdir="${dirs.base}/demo/${name}/" destdir="${classdir}" classpath="${dirs.base}/classes" includes="*.java" /> </target> <target name="idl" depends="myinit,load-taskdef"> <mkdir dir="${dest}" /> <jacidl srcdir="demo/${name}" destdir="${dest}" includepath="${include}" includes="*.idl"/> </target> <target name="clean" depends="myinit"> <delete dir="${classdir}/demo/${name}"/> <delete dir="${dirs.base}/demo/${name}/generated"/> </target> </project>
执行ant的过程如下:
正确启动NS后,DOS窗口转到demo/book目录下执行ant (如果ant没有安装则不会编译)
C:\JacORB\demo\book > ant
这样会进行idl编译book.idl文件,在C:\JacORB\demo\book\generated下生成corba所需的源文件
同时,ant会编译所有的java源文件, C:\JacORB\classes下面生成.class文件
3、实现book.idl文件hello模块中BookInf接口,手动创建BookImp.java文件
package MyServer.hello; public class BookImp extends BookInfPOA{ //String book="0.退出"+"\n"+"1.红楼梦"+"\n"+"2.三国演义"; public String bookDB() { // TODO Auto-generated method stub return "0.退出"+"\n"+"1.红楼梦"+"\n"+"2.三国演义"+"\n"+"3.西游记"+"\n"+"4.红与黑"+"\n"+"5.漂亮朋友"+"\n"+"6.理智与情感"+"\n"+"7.简爱"+"\n"+"8.平凡的世界"+"\n"+"9.儿子与情人"+"\n"+"10.世界历史简史"; } }
4、创建Server和Client(服务器端和客户端)程序
===================Server.java===========================
package MyServer.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 对象 BookImp bookImp = new BookImp(); // 创建 GoodDay 对象的引用 org.omg.CORBA.Object obj = poa.servant_to_reference(bookImp); // 使用 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 MyServer.hello; import org.omg.CORBA.ORB; import org.omg.CosNaming.NamingContextExt; import org.omg.CosNaming.NamingContextExtHelper; import java.util.*; public class Client { public static int[] book; public static int choice; Client(){ book=new int[10]; for(int i=0;i<10;i++){ book[i]=0; } } public static void main(String[] args) { try{ BookInf bookInf; Client t=new Client(); 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")); //解析对象 bookInf = BookInfHelper.narrow(obj); //转换 // GoodDay 接口调用 System.out.println(bookInf.bookDB()); System.out.println("请选择你所要的书籍代号:"); do{ Scanner in=new Scanner(System.in); choice=in.nextInt(); if(choice<0||choice>10){ System.out.println("您输入的不符合要求,请输入0-10之间的选项!"); } else if(choice==0) break; else{ t.book[choice-1]=1; } }while(choice!=0); String booklist[]={"0.退出","1.红楼梦","2.三国演义","3.西游记","4.红与黑","5.漂亮朋友","6.理智与情感","7.简爱","8.平凡的世界","9.儿子与情人","10.世界历史简史"}; System.out.println("您选择的书目是:"); for(int i=0;i<10;i++){ if(t.book[i]!=0){ System.out.println(booklist[i+1]); } } //System.out.println(bookInf.bookChosen(result)); }catch(Exception e) { e.printStackTrace(); } :arrow: } }
5、运行程序
本地调用:
运行JacORB的ns,在DOS下输入ns c:\NS_Ref,打开服务。
这时ns把服务的信息写在了c:\NS_Ref文件里
运行Server和Client
另外打开两个命令窗口,分别运行jaco MyServer.hello.Server及jaco MyServer.hello.Client,即可看到客户端的书目信息列表。
参考资料:配置JacORB及ORB Studio:http://blog.csdn.net/soda7/archive/2008/05/19/2457795.aspx
利用ant工具:http://hi.baidu.com/riffling/blog/item/27fee911fb7cc116b8127b39.html
心得:Corba花了差不多有三天时间吧,一天半用来配置环境,一天半用来找bug,在idl语言中,如果是汉语的话不能使用string类型,而是wstring,本来想将选好的书目列表也封装进去,然后在客户端显示,但是不知道IDL语言中数组怎么使用,只好将就完成作业了。现在所实现的功能,和HelloWorld有一拼,幼稚呀!
而且Corba的实现机制也没有搞懂,就像EJB的作业一样,先记在这儿,写完报告再研究(希望可以)。
A JA Fighting!
ps:刚才TJ打电话叫实习,去还是不去呢?1K有点少了,时间还长,而且关键不知道能不能学到东东,怎么办?又没有别的公司可去,纠结~有大侠指引吗?呵呵呵~大侠不会看这么弱智的东东吧
发表评论
-
windows下python使用protobuf的教程
2022-02-28 15:16 400参照https://blog.csdn.net/C ... -
使用wiremock模拟返回数据
2018-11-14 11:13 1704步骤如下: 1. 下载wiremock- ... -
贴些编程题
2010-06-08 20:28 9151. 给定多项式A(x0)=anxn+an-1xn-1+…+a ... -
静态工厂方法[Z]
2010-05-18 17:36 1066ava面向对象编程-静态工厂方法 Java面向对象编程- 静态 ... -
Oracle的两道基础知识题
2010-04-08 23:46 10121.Oracle中,需要在查询语句中把空值(NULL)输出为0 ... -
TOMCAT部署项目有3种方法
2009-08-24 14:13 12551、直接把项目web文件夹放在webapps里 2、修改con ... -
基于Struts的第一个项目(续)
2009-08-21 23:12 948在前面写的项目中,加入一个UserManger类,处理 ... -
jad反编译工具的那些事
2009-08-20 16:49 1340在学习Struts构架时,需要查看源码,按照资料的步骤, ... -
基于Struts的第一个项目
2009-08-12 23:28 965好久没来这,最近在做实习,遇到好多问题应该贴在这的,失误 ... -
构造器
2009-05-20 17:09 1139构造器的调用过程: 首 ... -
Java Singleton(单件)模式
2009-05-14 23:14 4633程序中经常有这样的要求,整个程序运行时只有一个实例被使用。 比 ... -
JAVA面试编程题1
2009-05-13 00:03 3382学习一:StringTokenizer的应用 StringTo ...
相关推荐
CORBA是一种标准的中间件技术,它允许不同计算机上的应用程序通过网络进行通信,实现跨语言、跨平台的分布式对象交互。在这个实例中,我们将探讨CORBA的基础概念、主要组件以及如何使用它来创建一个简单的计算器应用...
本文将深入探讨如何利用CORBA的命名服务来实现一个简单的客户端-服务器(CS)接口,并通过具体的Java代码示例进行演示。 【描述】:利用CORBA命名服务实现CS接口的过程通常包括以下步骤: 1. **配置ORB(Object ...
1. **教学与培训**:教育环境中,教师可以利用模拟器向学生展示Corba工作原理,进行实战演示。 2. **开发调试**:开发者在构建Corba应用程序时,可以利用模拟器测试接口和通信流程,确保代码的正确性。 3. **系统...
CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是用于分布式计算的一种标准,它允许不同系统间的软件对象进行交互,就像它们在同一个进程内一样。在C++环境中进行CORBA开发可以帮助...
Java CORBA,全称为Java Common Object Request Broker Architecture(Java通用对象请求代理架构),是一种用于分布式计算的技术,允许不同网络上的对象或服务之间进行交互。它实现了对象请求代理(ORB)的概念,...
"Telcopro"是一个专门针对CORBA进行测试的工具。它可能提供了多种功能,如接口一致性测试、性能测试、故障注入以及并发测试等,以确保CORBA服务的可靠性和效率。这类工具对于开发和维护大规模分布式系统的企业尤其有...
6. **SocketAPI**:虽然CORBA有自己的通信机制,但有时也可能利用底层的Socket API进行通信,特别是在自定义ORB实现或与其他非CORBA系统交互时。SocketAPI目录下的代码可能展示了如何使用Socket进行网络通信,这在...
CORBA(Common Object Request Broker Architecture,公共对象请求代理架构)是一项开放的标准,它定义了一种分布式计算模型,允许不同操作系统、编程语言和网络环境中的软件组件进行交互。TMF814则是通信行业的特定...
2. **基于CORBA的聊天软件**:该案例演示了如何利用CORBA实现不同中间件之间的通信,使得两个原本不兼容的系统能够成功集成。 #### 结束语 CORBA作为一种成熟的分布式计算标准,已经在多个行业中得到了广泛的应用...
- **编程示例**:书中详细介绍了如何使用CORBA进行编程,包括如何定义接口、实现对象以及如何使用ORB进行对象间通信。 #### 五、CORBA的常用服务 - **命名服务**:提供全局唯一标识符,帮助客户端定位所需的服务...
在这个例子中,我们将讨论如何在BCB6环境下利用CORBA技术来构建一个分布式应用。 【描述】:“Corba的例子,BCB6开发的,配置IP,等” 在BCB6中实现CORBA应用程序,首先需要安装适当的CORBA库,如Tango或Iona ...
CORBA是一种标准的中间件技术,允许不同操作系统、编程语言和网络上的对象进行交互,它通过Object Request Broker (ORB)实现对象间的透明通信。 压缩包子文件的文件名称列表如下: 1. **jbi4corba-idl2wsdl-tool-...
为了更好地利用实时CORBA的特性,应用实例通常会结合优先级映射技术,将CORBA的优先级与本地操作系统的优先级进行映射,从而确保应用在不同节点上的实时一致性。此外,还会采用灵活的线程管理策略,如优先级调整和...
总的来说,这本教程提供了全面而深入的C++ CORBA实现知识,适合希望利用C++进行分布式系统开发的程序员,以及对中间件技术感兴趣的读者。通过阅读和实践书中的例子,读者将能够熟练地利用CORBA来解决实际的分布式...
CORBA公共对象请求代理结构 CORBA(Common Object Request Broker Architecture)是一种基于对象的分布式计算架构,旨在提供一种通用的、平台独立的、语言独立的对象请求代理机制。CORBA的主要思想是采用标准的接口...
- 商品浏览模块:显示商品列表,获取服务端商品管理对象的数据。 - 出价模块:用户提交出价请求,调用拍卖管理对象的出价接口。 **5. CORBA通信机制** 在基于CORBA的拍卖系统中,客户端和服务端通过ORB进行通信。...
Java RMI允许Java对象通过网络进行通信,而CORBA则扩展了这种能力,使其能够与任何支持CORBA标准的语言和平台上的对象交互。开发者可以使用Java RMI_CORBA来实现跨语言、跨平台的分布式系统。 在实现过程中,首先,...
CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是一种中间件技术,它允许在分布式计算环境中...理解这些概念和流程,将有助于开发者在分布式系统中有效地利用CORBA进行跨平台通信。
【Corba 模拟器】是一种强大的工具,用于在不编写任何代码的情况下对Corba(Common Object Request Broker Architecture)系统进行功能测试。Corba是一种中间件技术,它允许不同的应用程序在分布式环境中相互通信,...
CORBA标准旨在提供一种机制,允许不同的软件组件(对象)之间进行通信和协同工作,即使这些组件可能运行在不同的操作系统上、使用不同的编程语言、位于网络的不同位置。 版本3.2的CORBA标准由多个部分组成,其中第...