`
bfcat
  • 浏览: 8342 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Orbacus 4.3.4 + Eclipse 3.6 (Helios) + ORBStudio777 开发环境搭建

阅读更多

   2010年中秋闲来无事, 把以前做Corba开发的一些积累整理一下, 抽空发几贴。 希望对后面的同行有所帮助。

 

---------------------------------------------------------------------

说明: 本文没有图片,方便转载,欢迎转载。 请注明 JavaEye

---------------------------------------------------------------------

 

    Java Corba 的实现比较多,有 Jacorb, OpenOrb, Orbacus Java版本等等, Eclipse从3.0一路走到现在也没有什么好说的, Orbstudio现在想下载一个都有点麻烦,但还是可以搜索到。 关于 Eclipse , Orbstudio 和 OpenOrb搭建环境的资料有几篇不错的,在这里先推荐一下:

1。Eclipse3.2下配置ORBStudio插件的corba开发环境  http://ardenyu.iteye.com/blog/137769

2。Eclipse中corba环境的建立  http://blog.donews.com/chaoyang/archive/2005/09/28/570630.aspx

 

    我这里就着重讲Orbacus 4.3.4(JOB) + Eclipse 3.6 (Helios) + ORBStudio777的环境搭建。

1。 从网络上下载了上述三个软件包后,还是不能工作的。还需要准备 ant, 这个工具用来编译 Orbacus, 就目前而言用JDK1.6-U21, ant1.8 对JOB的编译还没有看到什么投诉的(32位环境下,windows 7 ,FC13, RH5.5上都实验过了)。 具体过程如下:

 a) jdk安装在 c:\jdk1.6目录里面, 设置 JAVA_HOME,修改path 增加  c:\jdk1.6\bin(不会? 鼠标右键点我的电脑->属性,再选择高级系统设置-> 高级页面,环境变量, 在上面的用户变量区域里面操作 )

  b) 把ant解压缩到 c:\ant, 增加 ANT_HOME, 修改path 增加  c:\ant\bin ,

  c)  把 JOB 的目录解压缩, 有个目录 JOB-4.3.4-bin, 把这个目录移动到C:\JOB-4.3.4\, 里面有个自目录\bin,不要动,修改path 增加  C:\JOB-4.3.4\\bin。

  d) 开启 DOS窗口,进入JOB-4.3.4所在目录, 执行 ant -Dinstall.dir=C:\JOB-4.3.4,  我这里编译完成后放在  C:\JOB-4.3.4\, 里面有 bin, idl, lib 三个目录, 其中 bin目录从哪里来的呢? 是下载回来就有的, 自己仔细看看文档吧。

 

2。 编译完 JOB4.3.4后,如果想测试一下你的JOB, 去看看 ob目录下demo目录下的echo和hello,如果你简单设置独立classpath, 则可以运行client端的代码,但是server端的代码都会出错

      让我们以hello为例子,以windows 7 为运行环境(linux上基本一样,我是指出错误的情况),参照readme说明

设置 运行环境

set CLASSPATH=..\..\lib;classes;%CLASSPATH%
java hello.Server

其中, ..\..\lib 为JOB的jar包, 8~9个, classes为当前运行目录下的hello 项目的classes文件所在目录,最后的那个%CLASSPATH%大家可以去掉。

 

在我的环境中式这样的

set CLASSPATH=.;classes;C:\JOB-4.3.4\lib\OB.jar;C:\JOB-4.3.4\lib\OBBalancer.jar;C:\JOB-4.3.4\lib\OBBiDir.jar;C:\JOB-4.3.4\lib\OBEvent.jar;C:\JOB-4.3.4\lib\OBIMR.jar;C:\JOB-4.3.4\lib\OBNaming.jar;C:\JOB-4.3.4\lib\OBProperty.jar;C:\JOB-4.3.4\lib\OBTime.jar;C:\JOB-4.3.4\lib\OBUDP.jar;C:\JOB-4.3.4\lib\OBUtil.jar;C:\JOB-4.3.4\lib\OBWatson.jar;C:\JOB-4.3.4\lib\OBTest.jar

 

Case1。 如果你看到这个错误

 

Exception in thread "main" java.lang.NoClassDefFoundError: hello/Server
Caused by: java.lang.ClassNotFoundException: hello.Server
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source);
Could not find the main class: hello.Server.  Program will exit.

 

说明没有找到当前 hello 项目的类所在路径,解决方法是在hello这个工程目录里面执行 java hello.Server命令

例如: C:\workspace\JOB-4.3.4\ob\demo\hello> java hello.Server

 

Case2。 如果看到这个错误

Exception in thread "main" java.lang.NoSuchMethodError:org.omg.PortableInterceptor.IORInterceptor_3_0.adapter_manager_state_changed(Ljava/lang/String;S)V
        at com.ooc.OB.PIManager.adapterManagerStateChange(Unknown Source)
        at com.ooc.OBPortableServer.POAManager_impl.activate(Unknown Source)
        at hello.Server.run(Unknown Source)
        at hello.Server.main(Unknown Source)

这说明有个类找不到,可是我已经把所有的jar包都带着classpath里面了? Why? Faint。 用10分钟,google 一下。 原来问题在这里, readme里面说 (以windows为例, Linux一样的解决方法)

rem
rem Uncomment the following if using JDK1.4
rem
rem set BOOTCLASSPATH=-Xbootclasspath/p:"%CLASSPATH%"

 

其实应该是 if using JDK1.4 or later

所有说这个选项是必须的,故启动 server的时候必须这样

java -Xbootclasspath/p:%CLASSPATH%  hello.Server

 

类似的情况还会出现在 eclipse里面调试 server端程序的时候, 需要你在 run configuration 里面, 在 vm参数里面加上 -Xbootclasspath/p:%CLASSPATH% , 由于classpath参数传不进去,所以我直接这样

-Xbootclasspath/p:C:\JOB-4.3.4\lib\OB.jar;C:\JOB-4.3.4\lib\OBBalancer.jar;C:\JOB-4.3.4\lib\OBBiDir.jar;C:\JOB-4.3.4\lib\OBEvent.jar;C:\JOB-4.3.4\lib\OBIMR.jar;C:\JOB-4.3.4\lib\OBNaming.jar;C:\JOB-4.3.4\lib\OBProperty.jar;C:\JOB-4.3.4\lib\OBTime.jar;C:\JOB-4.3.4\lib\OBUDP.jar;C:\JOB-4.3.4\lib\OBUtil.jar;C:\JOB-4.3.4\lib\OBWatson.jar;C:\JOB-4.3.4\lib\OBTest.jar

虽然丑了些,呵呵。

 

Case 3。 现在 Server也启动了, Client也启动了,为什么发送信息没有反应,过段时间Client端出这个错误

org.omg.CORBA.TRANSIENT: attempt to establish connection failed: java.net.ConnectException: Connection timed out: connect  vmcid: 0x4f4f0000  minor code: 1  completed: No
        at com.ooc.OCI.IIOP.Connector_impl.connect(Unknown Source)
        at com.ooc.OB.GIOPClient.getWorker(Unknown Source)
        at com.ooc.OB.GIOPClient.bind(Unknown Source)
        at com.ooc.OB.DowncallStub.locate_request(Unknown Source)
        at com.ooc.CORBA.Delegate._OB_getDowncallStub(Unknown Source)
        at com.ooc.CORBA.Delegate.request(Unknown Source)
        at org.omg.CORBA.portable.ObjectImpl._request(Unknown Source)
        at hello._HelloStub.say_hello(Unknown Source)
        at hello.Client.run(Unknown Source)
        at hello.Client.main(Unknown Source)

呵呵, 真是点背啊,这种错误都有,简单,网络不通了, 自然是没有接网线吧?! 接上网络, 还会出现?! Faint。

仔细检查一下, 发现我这里是 NOD32 的防火墙把这个链接给干掉了, 解决方法是把防火墙上加个规则(端口号比较怪), 如果你不会的话,就临时把防火墙关闭一下也可以。

 

当然,高手在测试 hello例子的时候,可能直接看到

Client端显示

C:\workspace\JOB-4.3.4\ob\demo\hello>java hello.Client
Enter 'h' for hello, 's' for shutdown or 'x' for exit:
> h
> x

 

Server端显示

C:\workspace\JOB-4.3.4\ob\demo\hello>java -Xbootclasspath/p:%CLASSPATH%  hello.Server
Hello World!

 

那就先恭喜你了!

至此, Orbacus Java 版本调试成功。 准备进入集成环境工作。

 

3。 Eclipse 安装

把下载回来的Zip包解压缩,我是放在 c:\eclipse 这里了。 进去,里面有个 eclipse.exe 执行它就ok, 如果出现错误,检查JDK, 通常注意 32 位环境下, eclipse和jdk都要是32位的就可以, 64位系统下, 要保持 eclipse和jdk是一致的就可以。 如果怎么折腾都不行的话, 重新安装系统,再来就OK了。这种情况通常跟人品有关系。

 

4。 安装 orbstudio

    orbstudio其实是个 eclipse corba开发插件,目前是 7.7.7版本, 没有必要去试验老版本了。 我的习惯就是用新版本的。最初我是为了找个 eclipse 下面的 IDL 编译插件, 结果发现了这个宝贝。 安装过程非常简单,先关闭eclipse,从 777 的压缩包里面把 ORBStudio_7.7.7.jar 找到并扔到 eclipse 的plugins 目录里面, 在我的环境中如下:

解压缩 orbastuio 777, 把C:\360Downloads\ORBStudio777\ORBStudio\plugins\ORBStudio_7.7.7.jar 复制到  C:\eclipse\plugins 。 重启eclipse 就ok了。 在 windwos菜单中preferences 里面多了个 ORB Studio 菜单吧。 如果没有看到这个菜单的话,多半是因为你没有关闭 eclipse, 先关闭再复制。 多试试吧,一定会出来的,这个可以有的。

 

5。 eclipse中orbsutio中增加 orbacus

在下拉菜单Window的Preferences项里找到ORB Studio—>IDL Compiler , 好可怜, 有 IONA Orbix, JacORB, Sun Java IDL, OpenORB, visiBroker, 就是没有 orbacus。。。 怎么办? 天无绝人之路, 其实这就是个 IDL编译器吗,  运行环境就是 idl xxx.idl , 没有什么复杂的。 先学习一下(IDL Compiler前面有个小箭头,是可以点开的):

看看 Sun JavaIDL是怎么写的

第一行:idlj     /* 在 jdk的目录里面 */

第二行:-fall -fallTIE -td %D%  %F%    /* D 代表目录, F代码输入的idl文件,我猜测的, TIE代表POA Tie的代理模式,这个可以有的 */

 

类推 orbacus 的写法应该是

第一行 : jidl

第二行 : --output-dir %D% --tie --impl %F%

 

剩下的工作就是选个你不想用的做个替换吧, 我这里是把IONA Orbix替换掉了,毕竟他们现在是一家人了。这样在后继的工作中大家编译 idl 的时候就选 IONA Orbix 就可以了。

 

jidl 在  C:\JOB-4.3.4\\bin, 上面这样做的时候,你最后在 path 里面增加  C:\JOB-4.3.4\bin, 否则会出问题。

 

 

6。 开发环境配置好了,现在做Demo

a) 在eclipse里新建项目,Java Project

b) 给新项目添加Libraries,右键Properites—>Libraries—>Add External Jars 把 C:\JOB-4.3.4\lib 里面的 jar文件都选上吧,其实做实验只要增加 OB.jar, 我这个人比较懒,都加上了, 咱不差钱,这个可以有。

c)src上右键New—>Other—>CORBA Wizard—>IDL files—>Simple IDL;

   这里先注意一下,打开这个文件,对着这个文件猛击鼠标左键

出现

module MyServer {
 interface MyService {
  void operation1(in string msg);
 };
};

这里可以根据你的情况,把MyServer修改为你的package名字,从而简化你的命名管理,当然后期重构也可以,我这里修改如下(你可以不改,这个可以没有)

module test {
 interface MyService {
  void operation1(in string msg);
 };
};
d) 选择IDL文件,右键ORB Menu—>Compile ,则会在 src 下面生成 MyServer或者 test 的子目录, 有的地方说要把生成的MyServer包移动到src目录下, 这种情况在 我这里不会发生,如发生了就移动下吧, 正常的话,应该生成了 8 个java文件。

e) src上右键New—>Other—>CORBA Wizard—>Server—>Default Servant—>Next

 在弹出的对话框里IDL filename栏选择/{projectName}/src/{IDLname}.idl

   Interface栏选择IDL文件里定义的接口名

   Package栏里填写包名, 这里的包名可以进行区分,例如选择 server,如果你也选择 test, 那么产生的文件就会跟 idl编译出来的文件放在一起,你喜欢这样吗?

   Server classname栏里填写服务端类名, 我都懒得改了。

 —>Next    在弹出的对话框,选中Create server class:项打钩, create tie 估计你现在用不着,空着吧。

f) 为生成的服务端类添加未实现的方法,并填写方法体, 否则你会看到有个红叉叉, 不要慌, 不知道怎么办了吧? 在eclipse里面鼠标悬停在出错的地方, 很快句有提示了吧, 选择add unimplement method,自动增加一个空方法,爽啊。
g) src上右键New—>Other—>CORBA Wizard—>Client—>Simple implementation 在弹出的对话框里IDL filename栏选择/{projectName}/src/{IDLname}.idl

   Interface栏选择IDL文件里定义的接口名

   Package栏里填写包名, 我这里一般填写 client

   Client classname栏里填写客户端类名

h)在客户端类的main方法里,取消注释test.getORBInterface().operation1("A message in the bottle…"); 并修改传递的String内容
i)至此,我的 src目录里面 有 client,server和 test 三个目录

j)去 Run -> run configurations, 增加一个 startServer 的启动项, 在 arguments 的  vm arguments里面增加前面说过的 -Xbootclasspath 参数,main里面填写上 Server_DefaultServant,当然前面有包名,我这里就不写了。

j)运行服务端程序,通过 startServer 来启动 Server_DefaultServant.java,然后再运行客户端程序MyServiceClientImpl.java。 当然,两个不能同时在 Eclipse里面玩, 去外面另外启动一个 dos窗口吧, 现在明白了为什么最还是要测试一下 JOB的工作了吧, 有了前面的测试基础,现在你就轻松了。

 

如果,你要将你的程序包发布到别的机器上,就要用到名称服务,使用名称服务,参见其它的文章吧, 这是一个新的开始,真正了解和学习的开始, 去更多地了解Corba,从现在开始。

 

Good luck, Save yourself.

 

By  Dr.Cat,  Call me BFcat is OK.

2010 年的寂寞中秋,独自徘徊在广州。

                                                

 

---------------------------------------------------------------------

说明: 本文没有图片,方便转载,欢迎转载。 请注明 JavaEye

 

 

0
0
分享到:
评论
2 楼 ewwerpm 2012-04-11  
D:\JOB-4.3.4\lib>java -Xbootclasspath/p:OB.jar -Dooc.orb.oa.endpoint="iiop --por
t 9998" -classpath OBNaming.jar;OB.jar com.ooc.CosNaming.Server

要用 -Xbootclasspath/p:OB.jar  否则会报错
Exception in thread "main" java.lang.NoSuchMethodError: org.omg.PortableIntercep
tor.IORInterceptor_3_0.adapter_manager_state_changed(Ljava/lang/String;S)V
1 楼 bfcat 2010-09-25  
关于自动产生代码中,由于使用了 iona orbix 的 idl 编译器, 故需要在代码中找到 properties的声明,并做替换:


	Properties props = System.getProperties();
	props.setProperty("org.omg.CORBA.ORBClass", "com.ooc.OBServer.ORB");
	props.setProperty("org.omg.CORBA.ORBSingletonClass", "om.ooc.CORBA.ORBSingleton");

相关推荐

    Orbacus4.3.4 + Eclipse 3.6.1 + ORBStudio777(增强版)环境搭建

    总之,"Orbacus4.3.4 + Eclipse 3.6.1 + ORBStudio777(增强版)"的环境搭建是一个复杂但重要的过程,它涉及ORB技术、Java开发和可视化工具的综合运用,旨在为分布式系统的开发和调试提供一个高效的工作环境。

    Orbacus4.3.4[一个CORBA C++ 开源库]

    **Orbacus 4.3.4:一个强大的CORBA C++开源库** Orbacus是一个专门为实现CORBA(Common Object Request Broker Architecture)标准而设计的C++库,由IONA公司开发,后来被PROGRESS Software公司收购。CORBA是一种...

    Orbacus JOB-4.3.4 source

    ORBacus对GIOP的实现允许其适应不同的网络环境,增强了系统的灵活性和互操作性。 再者,ORBacus包含了ORB服务,如命名服务、事件服务、交易服务等,这些都是CORBA规范定义的关键服务。命名服务提供了一种对象寻址...

    Orbacus-4.3.4 for linux

    【Orbacus-4.3.4 for Linux】是一款针对Linux操作系统设计的CORBA(Common Object Request Broker Architecture)实现工具,由Orbacus官方开发并发布。此版本被视为官方的最终版,意味着它可能包含了所有必要的功能...

    OOC4.3.4d[Debug下编译好的C++库]

    总之,Orbacus 4.3.4d是一个强大的工具,对于需要在C++环境中开发CORBA应用的开发者来说,这是一个宝贵的资源。理解其工作原理、如何配置和使用,以及如何利用Debug库进行有效调试,是成功开发的关键步骤。通过深入...

    Orbacus使用指南

    Orbacus-4.3.4版本的使用指南详细描述了如何使用Orbacus开发基于CORBA标准的分布式应用程序。文档中提供了丰富的代码示例,以及这些示例的说明,这些示例贯穿了整个开发过程,帮助开发者理解如何构建服务端和客户端...

    ORBACUS库编译指南

    ORBACUS作为CORBA的一个实现,提供了丰富的API和工具,帮助开发者更高效地开发CORBA应用程序。 #### 二、编译环境配置 ##### 2.1 编译前准备 在进行ORBACUS的编译之前,需要完成以下准备工作: - **CORBA源码...

    Orbacus Guide

    This manual describes how Orbacus implements the CORBA standard, and describes how to develop and maintain code that uses the Orbacus ORB. This is the primary developer’s guide and reference for ...

    [IONA]CORBA_C++_Programming_With_ORBacus.zip

    这本书旨在帮助开发者理解并熟练掌握CORBA标准在C++环境中的实现,特别是ORBacus这个强大的ORB(Object Request Broker)框架。 CORBA是一种分布式计算模型,它允许不同操作系统、编程语言和网络环境中的对象互相...

    Orbacus JThreads/C++ Guide

    Orbacus JThreads/C++ Guide 是 Progress Software Corporation 发布的一份技术指南文档,该文档主要针对的是 Version 4.3.4 版本,并于 2010 年 2 月发布。这份文档涵盖了 JThreads 和 C++ 在 Orbacus 上的应用指南...

    OOC4.3.4[Release下编译好的C++库]

    6. **依赖管理**:确保你的开发环境中安装了所有必要的依赖,如 CORBA 兼容的运行时环境和其他库,这些可能需要根据你的具体需求额外安装。 7. **错误调试**:在使用预编译库时可能会遇到链接错误或运行时错误,...

    FreeSSL for Orbacus Guide

    This manual describes the FreeSSL plug-in, which enables secure communications using the Orbacus ORB in both Java and C++.

    Orbacus Notify Guide

    This manual describes Orbacus Notify, an implementation of the Object Management Group’s Notification Service specification.

    介绍corba使用和java的集成

    CORBA(Common Object Request Broker Architecture...总之,CORBA 与 Java 的集成为构建分布式应用提供了一种强大而灵活的方式,通过 Orbacus 等工具的支持,可以极大地简化开发过程,提高应用的互操作性和可扩展性。

    系统安装手册Windows样本.doc

    在安装 Windows 操作系统前,需要获取安装文献,从“\\172.20.2.121\tools\VS SP1 下 ACE 5.5 + Qt 3.3.8 + Orbacus 4.3.2”上预编译好 ACE_wrappers_5_5.rar,Qt.rar,IONA.rar 等安装包。同时,也可以从“\\yf-...

    3使用Java开发CORBA

    CORBA(Common Object Request Broker Architecture,公共对象请求代理架构)是一种标准的中间件技术,它允许分布在不同网络环境、操作系统和编程语言中的对象相互通信,实现分布式系统的构建。Java作为一种跨平台的...

    Minos-开源

    Minos是用C ++编写的OMG CORBA Notification Service的轻量级可移植实现。 可以使用omniORB,TAO,MICO和ORBacus构建。

    CORBA EXPLAINED SIMPLY

    CORBA(通用对象请求代理体系结构)是一个工业标准的中间件架构,它定义了如何在分布式计算环境中实现对象之间的通信。这本书的目的是让读者能够了解CORBA的基础知识,而无需深入到繁琐的底层实现细节中。 描述中...

    CIF - Component Container Visualisation-开源

    `LICENSE.ORBacus`可能指定了与ORBacus(一个CORBA ORB实现)相关的特定许可条款。 **项目构建与配置** 项目包含`win32.ant.properties`和`unix.ant.properties`文件,这些文件是Ant构建工具的配置文件,用于定义...

Global site tag (gtag.js) - Google Analytics