原创 TAO使用指南[zt from smth ]

2009-9-28 21:44 2627 4 4 分类: 软件与OS
标 题: TAO使用指南

发信站: BBS 水木清华站 (Thu May 8 18:35:49 2003), 站内



最近正在将一个工程由Orbix2000向TAO移植. 将一些心得和经验奉上,

算是给DOC版做点贡献... 说的不对, 请大家指正. 同时您有什么心得

也不仿写出来嘛



1. 什么是TAO?

TAO是美国华盛顿大学的CORBA界大牛Douglas C. Schmidt博士领导

开发的一个实时CORBA平台. 它是一个开放源码项目, 所以是完全免费的.

用C++语言开发. 符合CORBA2.6版本.

支持语言: C++

支持平台: Win32, 常见的各种Unix, Linux, 实时操作系统如VxWorks

等等. 在所有的CORBA平台中, TAO支持的平台应该是最多的.

支持的服务: Naming, Event, Notification, Security, Time,

Scheduling, Logging, Lifecycle, Trading, Concurrency, Lifecycle,

A/V Streaming, Load balancing等.



2. 网上的TAO资源

TAO主页: http://www.cs.wustl.edu/~schmidt/TAO.html

OCI公司宣布对TAO进行技术支持: http://www.ociweb.com

它出了一本书叫: TAO Developer's Guide, 上下两卷, 1000页

左右, 要250美刀. 吐血买了一本...

此外, OCI有自己的TAO发布版本, 最新版本号为1.2a. Win32版本

开价50美刀.

OCI有一个TAO的FAQ, 很不错, 地址:

http://www.ociweb.com/faq/index.html

TAO的Mailing List: tao-users@cs.wustl.edu

Mailing List Archive: http://groups.yahoo.com/group/tao-users



3. 下载TAO

地址: http://deuce.doc.wustl.edu/Download.html

目前最新的Release版本是1.3



发信人: Mentoya (钻研Orbix2000中...), 信区: DOC

标 题: TAO使用指南 -- 编译ACE和TAO

发信站: BBS 水木清华站 (Thu May 8 19:11:37 2003), 转信



我只用到Win32平台. 现在使用的环境是: WinXP Professional + MSVC SP5.

在Win32平台下, 还可以使用C++ Builder来编译和开发TAO. 我没有用过.:-(

参见: http://www.cs.wustl.edu/~schmidt/ACE_wrappers/TAO/TAO-INSTALL.html

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

TAO完全支持Win32API,(包括Windows NT, Windows 2000, Windows 95/98/ME)

VC5.0和VC6.0均可编译。如果要在Borland C++ Builder中编译,请参见有关文档.

TAO可以被编译成两种版本:DLL版(动态链接)和LIB版(静态链接)



一. Win32+VC6.0下编译和安装ACE和TAO

将网上下载的TAO软件包解压缩到某个目录,在该目录下会有ACE_wrappers目录。

请按照以下步骤来执行:

1. 新建两个环境变量:

ACE_ROOT=ACE_wrappers所在目录;

TAO_ROOT=ACE_wrappers\tao

2. 在ACE_ROOT\ace目录下建立一个空文件config.h,里面包含一句:

#include "ace/config-win32.h"

以说明是要在win32平台下进行编译。

注:

(1) #include "config-win32.h"亦可

(2) 最好在#include之前加上

#define ACE_HAS_STANDARD_CPP_LIBRARY 1 以使用MSVC的STL库.

3. 如果是98/ME,则在ACE_ROOT\ace\config.h的最前面加上

#define ACE_HAS_WINNT4 0

来关掉一些NT/2000中特有的代码。

4. 如果你想用MSVC的STL库 (如iostream, cstdio等), 则在config.h文件

中的#include语句前添加下面的行:

#define ACE_HAS_STANDARD_CPP_LIBRARY 1

注: 推荐使用该编译开关. 否则对新手而言, 在自己的工程中使用MSVC的STL

库时会有一些小麻烦.

5. 如果在ACE中要使用MFC的库,则需要在config.h中添加:

#define ACE_HAS_MFC 1



在默认情况下,所有的ACE工程使用的是MSVC的DLL文件作为运行时库。

你可以选择使用ACE的静态库文件(LIB)而不需考虑这些运行时库。

选择动态链接的原因是所有的NT都会包含这些dll文件(节省空间).

如果你想使用MFC的静态库版本,则需要在config.h中加入以下的宏定义:

#define ACE_USES_STATIC_MFC 1

你也可以全部使用静态库,这需要你在ACE的工程文件中自己设置。



6. 如果定义了ACE_AS_STATIC_LIBS 宏,则ACE 库将被编译成为静态库。

如果你的程序要静态链接ACE的静态库,则在你的工程中也要定义这个宏:

ACE_AS_STATIC_LIBS.



作为可选项,为了减小静态库文件和你的可执行程序的大小,你可以在

ACE_ROOT\ace\config.h文件的#include语句前添加如下的宏定义

#define ACE_NO_INLINE

来禁止内联函数。



7. 用VC打开TAO和ACE的工程文件:ACE_ROOT\tao\taoace.dsw,开始编译ACE

和TAO. 注意ACE和TAO有Debug和Release两个版本. 你在开发自己的程序时,

如果是Debug版的程序, 必须链接Debug版的TAO库, 如果是Release版的程序,

必须链接Release版的TAO库.(这不废话! 不过你一定会回来和我一起唱这个

当当当的)



taoace.dsw中包含了许多工程, 工程之间是有依赖关系的. 所以这个工程

编译的顺序比较重要. 关于编译的顺序, 下文叙述.



每个工程都包含有一些不同的配置:Debug/Release、MFC/Non-MFC、

Static/Dynamic等版本。你必须确定你所需要的版本。如,要生成你程序的

debug版,则需要debug版的ACE。



注意:如果你用动态(DLL)版本的TAO,在开发程序时,需要将ACE_ROOT\bin

目录添加到你的程序的PATH环境变量中,否则程序会报告找不到动态链接库.



8. 编译顺序.

TAO中有好多服务可能是你用不到的. 所以编译时没有必要将所有的程序全部

编译一遍. 要知道编译TAO还是个艰巨的任务咧.

我目前只用到了Naming和Event服务, 并且没有用它的实时CORBA功能. 所以我

的编译顺序是:



说明 需要编译的工程

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

核心库 ACE DLL Files

TAO DLL Files

IDL编译器 gperf Files

TAO_IDL_FE_DLL Files

TAO_IDL_BE_DLL Files

TAO_IDL Compiler Files

POA PortableServer Files

名字和事件服务 IORTable Files

Svc Utils Files

CosNaming Files

Naming_Service Files

Messaging Files

CosEvent Files

CosEvent_Service Files

NT_Naming_Service Files

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

TAO的主页上有一个可以自动编译所有TAO工程的脚本, 记不得在那里了.



9. 编译后得到的文件分散于各目录中:



可执行程序和动态链接库文件: $ACE_ROOT\bin



lib文件: $(ACE_ROOT)\ace,

$(TAO_ROOT)\tao,

$(TAO_ROOT)\orbsvcs\orbsvcs



头文件: $(ACE_ROOT),

$(TAO_ROOT),

$(TAO_ROOT)\orbsvcs

10. ACE的DLL和LIB的命名规则:

当使用MSVC编译时的命名规则如下:



"静态库/DLL文件名" + (是静态库吗? "s" : "") +

(是Debug模式的库吗? "d" : "") + (.dll/.lib)

11. 测试TAO

TAO的测试代码位于TAO_ROOT\tests目录下。有一个vc的工程文件:

TAO_tests.dsw来编译所有的测试代码。



发信人: Mentoya (钻研Orbix2000中...), 信区: DOC

标 题: TAO使用指南 -- 用VC++开发TAO程序

发信站: BBS 水木清华站 (Thu May 8 19:34:42 2003), 转信



在Microsoft Visual C++中开发TAO程序时的设置:



一. 路径设置

1. 首先确认环境变量ACE_ROOT和TAO_ROOT已被正确设置.



2. 将(ACE_ROOT\bin)添加到PATH环境变量中. 否则会找不到DLL.



3. 在Tools->Options->Directories中, 分别添加如下目录:

Include files:

$(ACE_ROOT),$(TAO_ROOT),$(TAO_ROOT)\orbsvcs

Library files:

$(ACE_ROOT)\ace,$(TAO_ROOT)\tao,$(TAO_ROOT)\orbsvcs\orbsvcs

4. 也可以在

Project->Settings->C/C++->Preprocessor->Additional include directories

中添加头文件的路径.



Project->Settings->Link->Input->Additional library directories

中添加静态库文件路径.



二. 工程设置

1. Project->Settings->C/C++->Code generation:

如果工程是Debug版, 选择Debug Multithreaded DLL

如果工程是Release版, 选择Multithreaded DLL

2. Project->Settings->Link->Input->Object/library modules:

需要添加TAO的静态链接库文件:



说明 Debug版 Release版

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

普通客户端: Debug版: ACEd.lib

Release版: ACE.lib

普通服务器: 在ACE.lib/ACEd.lib的基础上, 还需要添加:

Debug版: PortableServerd.lib

Release版: PortableServer.lib

如果使用了名字服务, 则需要添加 TAO_CosNaming.lib 或

TAO_CosNamingd.lib

如果使用了事件服务, 则需要添加 TAO_CosEvent.lib 或

TAO_CosEventd.lib



注意: TAO分Debug和Release版, 所以在开发时, Debug和Release版

的设置要严格区分. 即使是MS自己的库也是这样. 如对于

Debug版, 要包含MSVCRTd.lib而不是MSVCRT.lib. 我就是因为

这个原因而使程序出现异常, 导致差点放弃了TAO :-(



发信人: Mentoya (钻研Orbix2000中...), 信区: DOC

标 题: TAO使用指南 -- 做一个TAO的SDK

发信站: BBS 水木清华站 (Thu May 8 19:56:03 2003), 站内



TAO的文件众多, 目录结构复杂, 所以生成一个所谓的TAO SDK来方便开发.

这个TAO SDK的目录结构如下:



TAOSDK_ROOT

|

|-- bin (所有的可执行文件和动态链接库)

|-- idl (ORB的IDL文件)

|-- include (所有的头文件)

| |-- ace

| | |-- ***

| | |-- ***

| |

| |-- orbsvcs

| | |-- CosEvent

| | |-- Naming

| | |-- ***

| | |-- ***

| |

| |-- tao

| | |-- IORTable

| | |-- PortableServer

| | |-- ***

|-- lib (所有的静态库文件)





使用时, 首先创建环境变量 TAOSDK_ROOT 为TAO SDK的根目录, 然后

在VC的工程中如下设置:

添加头文件的include路径:

$(TAOSDK_ROOT)\include,$(TAOSDK_ROOT)\include\orbsvcs,$(TAOSDK_ROOT)\tao

添加静态库文件路径:

$(TAOSDK_ROOT)\lib



下面提供了一个自动生成TAO SDK的批处理文件, 将该文件置于ACE_ROOT目录下,

然后执行之...

注: 本程序来源于TAO的邮件列表.



File name: TAOSDK.bat

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

@echo off

@echo Createing directories…



mkdir ..\tao\bin

mkdir ..\tao\include

mkdir ..\tao\include\ace

mkdir ..\tao\include\ace\classix

mkdir ..\tao\include\ace\qos

mkdir ..\tao\include\ace\rmcast

mkdir ..\tao\include\ace\ssl

mkdir ..\tao\include\tao

mkdir ..\tao\include\tao\BiDir_GIOP

mkdir ..\tao\include\tao\Domain

mkdir ..\tao\include\tao\DynamicAny

mkdir ..\tao\include\tao\DynamicInterface

mkdir ..\tao\include\tao\IFR_Client

mkdir ..\tao\include\tao\IORManipulation

mkdir ..\tao\include\tao\IORTable

mkdir ..\tao\include\tao\PortableServer

mkdir ..\tao\include\tao\RTCORBA

mkdir ..\tao\include\tao\RTPortableServer

mkdir ..\tao\include\tao\SmartProxies

mkdir ..\tao\include\tao\Strategies

mkdir ..\tao\include\tao\TypeCodeFactory

mkdir ..\tao\include\orbsvcs

mkdir ..\tao\include\orbsvcs\AV

mkdir ..\tao\include\orbsvcs\Concurrency

mkdir ..\tao\include\orbsvcs\CosEvent

mkdir ..\tao\include\orbsvcs\ESF

mkdir ..\tao\include\orbsvcs\ETCL

mkdir ..\tao\include\orbsvcs\Event

mkdir ..\tao\include\orbsvcs\FaultTolerance

mkdir ..\tao\include\orbsvcs\LifeCycle

mkdir ..\tao\include\orbsvcs\LoadBalancing

mkdir ..\tao\include\orbsvcs\Log

mkdir ..\tao\include\orbsvcs\Naming

mkdir ..\tao\include\orbsvcs\Notify

mkdir ..\tao\include\orbsvcs\Property

mkdir ..\tao\include\orbsvcs\Sched

mkdir ..\tao\include\orbsvcs\Security

mkdir ..\tao\include\orbsvcs\SSLIOP

mkdir ..\tao\include\orbsvcs\Time

mkdir ..\tao\include\orbsvcs\Trader

mkdir ..\tao\lib



@echo copying header files...

copy ace\*.i ..\tao\include\ace

copy ace\*.inl ..\tao\include\ace

copy ace\*.h ..\tao\include\ace



copy ace\*.cpp ..\tao\include\ace

copy ace\classix\*.i ..\tao\include\ace\classix

copy ace\classix\*.h ..\tao\include\ace\classix

copy ace\classix\*.cpp ..\tao\include\ace\classix

copy ace\qos\*.i ..\tao\include\ace\qos

copy ace\qos\*.h ..\tao\include\ace\qos

copy ace\qos\*.cpp ..\tao\include\ace\qos

copy ace\rmcast\*.i ..\tao\include\ace\rmcast

copy ace\rmcast\*.h ..\tao\include\ace\rmcast

copy ace\rmcast\*.cpp ..\tao\include\ace\rmcast

copy ace\ssl\*.i ..\tao\include\ace\ssl

copy ace\ssl\*.h ..\tao\include\ace\ssl

copy ace\ssl\*.cpp ..\tao\include\ace\ssl



copy tao\tao\*.i ..\tao\include\tao

copy tao\tao\*.inl ..\tao\include\tao

copy tao\tao\*.h ..\tao\include\tao

copy tao\tao\*.idl ..\tao\include\tao

copy tao\tao\*.cpp ..\tao\include\tao

copy tao\orbsvcs\Naming_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\LoadBalancer\*.h ..\tao\include\tao

copy tao\orbsvcs\Logging_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\TAO_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\Time_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\Naming_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\Trading_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\ImplRepo_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\Concurrency_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\CosEvent_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\Dump_Schedule\*.h ..\tao\include\tao

copy tao\orbsvcs\Event_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\IFR_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\LifeCycle_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\Notify_Service\*.h ..\tao\include\tao

copy tao\orbsvcs\Scheduling_Service\*.h ..\tao\include\tao



copy tao\orbsvcs\orbsvcs\*.h ..\tao\include\orbsvcs

copy tao\orbsvcs\orbsvcs\*.i ..\tao\include\orbsvcs

copy tao\orbsvcs\orbsvcs\*.cpp ..\tao\include\orbsvcs

copy tao\orbsvcs\orbsvcs\AV\*.h ..\tao\include\orbsvcs\AV

copy tao\orbsvcs\orbsvcs\AV\*.i ..\tao\include\orbsvcs\AV

copy tao\orbsvcs\orbsvcs\AV\*.cpp ..\tao\include\orbsvcs\AV

copy tao\orbsvcs\orbsvcs\Concurrency\*.h
..\tao\include\orbsvcs\Concurrency

copy tao\orbsvcs\orbsvcs\Concurrency\*.i
..\tao\include\orbsvcs\Concurrency

copy tao\orbsvcs\orbsvcs\Concurrency\*.cpp
..\tao\include\orbsvcs\Concurrency

copy tao\orbsvcs\orbsvcs\CosEvent\*.h ..\tao\include\orbsvcs\CosEvent

copy tao\orbsvcs\orbsvcs\CosEvent\*.i ..\tao\include\orbsvcs\CosEvent

copy tao\orbsvcs\orbsvcs\CosEvent\*.cpp ..\tao\include\orbsvcs\CosEvent

copy tao\orbsvcs\orbsvcs\ESF\*.h ..\tao\include\orbsvcs\ESF

copy tao\orbsvcs\orbsvcs\ESF\*.i ..\tao\include\orbsvcs\ESF

copy tao\orbsvcs\orbsvcs\ESF\*.cpp ..\tao\include\orbsvcs\ESF

copy tao\orbsvcs\orbsvcs\ETCL\*.h ..\tao\include\orbsvcs\ETCL

copy tao\orbsvcs\orbsvcs\ETCL\*.i ..\tao\include\orbsvcs\ETCL

copy tao\orbsvcs\orbsvcs\ETCL\*.cpp ..\tao\include\orbsvcs\ETCL

copy tao\orbsvcs\orbsvcs\Event\*.h ..\tao\include\orbsvcs\Event

copy tao\orbsvcs\orbsvcs\Event\*.i ..\tao\include\orbsvcs\Event

copy tao\orbsvcs\orbsvcs\Event\*.cpp ..\tao\include\orbsvcs\Event

copy tao\orbsvcs\orbsvcs\FaultTolerance\*.h
..\tao\include\orbsvcs\FaultTolerance

copy tao\orbsvcs\orbsvcs\FaultTolerance\*.i
..\tao\include\orbsvcs\FaultTolerance

copy tao\orbsvcs\orbsvcs\FaultTolerance\*.cpp
..\tao\include\orbsvcs\FaultTolerance

copy tao\orbsvcs\orbsvcs\LifeCycle\*.h ..\tao\include\orbsvcs\LifeCycle

copy tao\orbsvcs\orbsvcs\LifeCycle\*.i ..\tao\include\orbsvcs\LifeCycle

copy tao\orbsvcs\orbsvcs\LifeCycle\*.cpp
..\tao\include\orbsvcs\LifeCycle

copy tao\orbsvcs\orbsvcs\LoadBalancing\*.h
..\tao\include\orbsvcs\LoadBalancing

copy tao\orbsvcs\orbsvcs\LoadBalancing\*.i
..\tao\include\orbsvcs\LoadBalancing

copy tao\orbsvcs\orbsvcs\LoadBalancing\*.cpp
..\tao\include\orbsvcs\LoadBalancing

copy tao\orbsvcs\orbsvcs\Log\*.h ..\tao\include\orbsvcs\Log

copy tao\orbsvcs\orbsvcs\Log\*.i ..\tao\include\orbsvcs\Log

copy tao\orbsvcs\orbsvcs\Log\*.cpp ..\tao\include\orbsvcs\Log

copy tao\orbsvcs\orbsvcs\Naming\*.h ..\tao\include\orbsvcs\Naming

copy tao\orbsvcs\orbsvcs\Naming\*.i ..\tao\include\orbsvcs\Naming

copy tao\orbsvcs\orbsvcs\Naming\*.cpp ..\tao\include\orbsvcs\Naming

copy tao\orbsvcs\orbsvcs\Notify\*.h ..\tao\include\orbsvcs\Notify

copy tao\orbsvcs\orbsvcs\Notify\*.i ..\tao\include\orbsvcs\Notify

copy tao\orbsvcs\orbsvcs\Notify\*.cpp ..\tao\include\orbsvcs\Notify

copy tao\orbsvcs\orbsvcs\Property\*.h ..\tao\include\orbsvcs\Property

copy tao\orbsvcs\orbsvcs\Property\*.i ..\tao\include\orbsvcs\Property

copy tao\orbsvcs\orbsvcs\Property\*.cpp ..\tao\include\orbsvcs\Property

copy tao\orbsvcs\orbsvcs\Sched\*.h ..\tao\include\orbsvcs\Sched

copy tao\orbsvcs\orbsvcs\Sched\*.i ..\tao\include\orbsvcs\Sched

copy tao\orbsvcs\orbsvcs\Sched\*.cpp ..\tao\include\orbsvcs\Sched

copy tao\orbsvcs\orbsvcs\Security\*.h ..\tao\include\orbsvcs\Security

copy tao\orbsvcs\orbsvcs\Security\*.i ..\tao\include\orbsvcs\Security

copy tao\orbsvcs\orbsvcs\Security\*.cpp ..\tao\include\orbsvcs\Security

copy tao\orbsvcs\orbsvcs\SSLIOP\*.h ..\tao\include\orbsvcs\SSLIOP

copy tao\orbsvcs\orbsvcs\SSLIOP\*.i ..\tao\include\orbsvcs\SSLIOP

copy tao\orbsvcs\orbsvcs\SSLIOP\*.cpp ..\tao\include\orbsvcs\SSLIOP

copy tao\orbsvcs\orbsvcs\Time\*.h ..\tao\include\orbsvcs\Time

copy tao\orbsvcs\orbsvcs\Time\*.i ..\tao\include\orbsvcs\Time

copy tao\orbsvcs\orbsvcs\Time\*.cpp ..\tao\include\orbsvcs\Time

copy tao\orbsvcs\orbsvcs\Trader\*.h ..\tao\include\orbsvcs\Trader

copy tao\orbsvcs\orbsvcs\Trader\*.i ..\tao\include\orbsvcs\Trader

copy tao\orbsvcs\orbsvcs\Trader\*.cpp ..\tao\include\orbsvcs\Trader



copy tao\tao\BiDir_GIOP\*.h ..\tao\include\tao\BiDir_GIOP

copy tao\tao\BiDir_GIOP\*.inl ..\tao\include\tao\BiDir_GIOP

copy tao\tao\BiDir_GIOP\*.i ..\tao\include\tao\BiDir_GIOP

copy tao\tao\Domain\*.h ..\tao\include\tao\Domain

copy tao\tao\Domain\*.inl ..\tao\include\tao\Domain

copy tao\tao\Domain\*.i ..\tao\include\tao\Domain

copy tao\tao\DynamicAny\*.h ..\tao\include\tao\DynamicAny

copy tao\tao\DynamicAny\*.inl ..\tao\include\tao\DynamicAny

copy tao\tao\DynamicAny\*.i ..\tao\include\tao\DynamicAny

copy tao\tao\DynamicInterface\*.h ..\tao\include\tao\DynamicInterface

copy tao\tao\DynamicInterface\*.inl ..\tao\include\tao\DynamicInterface

copy tao\tao\DynamicInterface\*.i ..\tao\include\tao\DynamicInterface

copy tao\tao\IFR_Client\*.h ..\tao\include\tao\IFR_Client

copy tao\tao\IFR_Client\*.inl ..\tao\include\tao\IFR_Client

copy tao\tao\IFR_Client\*.i ..\tao\include\tao\IFR_Client

copy tao\tao\IORManipulation\*.h ..\tao\include\tao\IORManipulation

copy tao\tao\IORManipulation\*.inl ..\tao\include\tao\IORManipulation

copy tao\tao\IORManipulation\*.i ..\tao\include\tao\IORManipulation

copy tao\tao\IORTable\*.h ..\tao\include\tao\IORTable

copy tao\tao\IORTable\*.inl ..\tao\include\tao\IORTable

copy tao\tao\IORTable\*.i ..\tao\include\tao\IORTable

copy tao\tao\PortableServer\*.h ..\tao\include\tao\PortableServer

copy tao\tao\PortableServer\*.inl ..\tao\include\tao\PortableServer

copy tao\tao\PortableServer\*.i ..\tao\include\tao\PortableServer

copy tao\tao\RTCORBA\*.h ..\tao\include\tao\RTCorba

copy tao\tao\RTCORBA\*.inl ..\tao\include\tao\RTCorba

copy tao\tao\RTCORBA\*.i ..\tao\include\tao\RTCorba

copy tao\tao\RTPortableServer\*.h ..\tao\include\tao\RTPortableServer

copy tao\tao\RTPortableServer\*.inl ..\tao\include\tao\RTPortableServer

copy tao\tao\RTPortableServer\*.i ..\tao\include\tao\RTPortableServer

copy tao\tao\SmartProxies\*.h ..\tao\include\tao\SmartProxies

copy tao\tao\SmartProxies\*.inl ..\tao\include\tao\SmartProxies

copy tao\tao\SmartProxies\*.i ..\tao\include\tao\SmartProxies

copy tao\tao\Strategies\*.h ..\tao\include\tao\Strategies

copy tao\tao\Strategies\*.inl ..\tao\include\tao\Strategies

copy tao\tao\Strategies\*.i ..\tao\include\tao\Strategies

copy tao\tao\TypeCodeFactory\*.h ..\tao\include\tao\TypeCodeFactory

copy tao\tao\TypeCodeFactory\*.inl ..\tao\include\tao\TypeCodeFactory

copy tao\tao\TypeCodeFactory\*.i ..\tao\include\tao\TypeCodeFactory



@echo copying libraries...

copy ace\*.lib ..\tao\lib

copy ace\SSL\*.lib ..\tao\lib

copy tao\tao\*.lib ..\tao\lib

copy tao\tao\BiDir_GIOP\*.lib ..\tao\lib

copy tao\tao\Domain\*.lib ..\tao\lib

copy tao\tao\DynamicAny\*.lib ..\tao\lib

copy tao\tao\DynamicInterface\*.lib ..\tao\lib

copy tao\tao\IFR_Client\*.lib ..\tao\lib

copy tao\tao\IORManipulation\*.lib ..\tao\lib

copy tao\tao\IORTable\*.lib ..\tao\lib

copy tao\tao\PortableServer\*.lib ..\tao\lib

copy tao\tao\RTCORBA\*.lib ..\tao\lib

copy tao\tao\RTPortableServer\*.lib ..\tao\lib

copy tao\tao\SmartProxies\*.lib ..\tao\lib

copy tao\tao\Strategies\*.lib ..\tao\lib

copy tao\tao\TypeCodeFactory\*.lib ..\tao\lib

copy tao\TAO_IDL\*.lib ..\tao\lib

copy tao\orbsvcs\IFR_Service\*.lib ..\tao\lib

copy tao\orbsvcs\orbsvcs\*.lib ..\tao\lib



@echo copying binary files...

copy bin\*.dll ..\tao\bin

copy bin\*.exe ..\tao\bin

copy tao\orbsvcs\Concurrency_Service\Concurrency_Service.exe
..\tao\bin\Concurrency_Serviced.exe

copy tao\orbsvcs\Concurrency_Service\Release\Concurrency_Service.exe
..\tao\bin

copy tao\orbsvcs\CosEvent_Service\CosEvent_Service.exe
..\tao\bin\CosEvent_Serviced.exe

copy tao\orbsvcs\CosEvent_Service\Release\CosEvent_Service.exe
..\tao\bin

copy tao\orbsvcs\Dump_Schedule\Dump_Schedule.exe
..\tao\bin\Dump_Scheduled.exe

copy tao\orbsvcs\Dump_Schedule\Release\Dump_Schedule.exe ..\tao\bin

copy tao\orbsvcs\Event_Service\Event_Service.exe
..\tao\bin\Event_Serviced.exe

copy tao\orbsvcs\Event_Service\Release\Event_Service.exe ..\tao\bin

copy tao\orbsvcs\IFR_Service\IFR_Service.exe ..\tao\bin\IFR_Serviced.exe

copy tao\orbsvcs\IFR_Service\Release\IFR_Service.exe ..\tao\bin

copy tao\orbsvcs\ImplRepo_Service\ImplRepo_Service.exe
..\tao\bin\ImplRepo_Serviced.exe

copy tao\orbsvcs\ImplRepo_Service\Release\ImplRepo_Service.exe
..\tao\bin

copy tao\orbsvcs\LifeCycle_Service\LifeCycle_Service.exe
..\tao\bin\LifeCycle_Serviced.exe

copy tao\orbsvcs\LifeCycle_Service\Release\LifeCycle_Service.exe
..\tao\bin

copy tao\orbsvcs\Naming_Service\Naming_Service.exe
..\tao\bin\Naming_Serviced.exe

copy tao\orbsvcs\Naming_Service\NT_Naming_Service.exe
..\tao\bin\NT_Naming_Serviced.exe

copy tao\orbsvcs\Naming_Service\Release\Naming_Service.exe ..\tao\bin

copy tao\orbsvcs\Naming_Service\Release\NT_Naming_Service.exe ..\tao\bin



copy tao\orbsvcs\Notify_Service\Notify_Service.exe ..\tao\bin

copy tao\orbsvcs\Scheduling_Service\Scheduling_Service.exe
..\tao\bin\Scheduling_Serviced.exe

copy tao\orbsvcs\Scheduling_Service\Release\Scheduling_Service.exe
..\tao\bin

copy tao\orbsvcs\Trading_Service\Trading_Service.exe
..\tao\bin\Trading_Serviced.exe

copy tao\orbsvcs\Trading_Service\Release\Trading_Service.exe ..\tao\bin



@Create TAO SDK Finished!

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


发信人: Mentoya (钻研Orbix2000中...), 信区: DOC

标 题: TAO使用指南 -- IDL编译器

发信站: BBS 水木清华站 (Thu May 8 20:56:43 2003), 站内



TAO的IDL编译器名字是: tao_idl.exe. Debug版位于Ace_Wrappers\bin目录下,

Release版位于Ace_Wrappers\bin\release目录下,文件名仍为tao_idl.exe。



1. 产生的文件:

*.idl文件被编译后产生的文件由文件名和后缀组成. 类型有:



说明 产生的文件格式(默认) 备注

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

客户stubs *C.h、*C.cpp、*C.i

服务器 skeletons *S.h、*S.cpp、*S.i

服务器 skeleton (tie) *S_T.h、*S_T.cpp、*S_T.i 可以用-Sc开关来去掉这些文件

实现类文件 *I.h、*I.cpp 默认不生成这些文件,需要用

-GI开关

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

注: 产生的文件格式(后缀、扩展名等)可以由命令行开关来控制。



2. TAO_IDL的编译选项:

输入命令

tao_idl -u

就会出现对idl的编译选项的详细说明.



TAO IDL编译器的编译选项虽然很多, 但是常用的就那么几个.



-Sc: 不生成tie类的实现

-Wb,pch_include=stdafx.h 生成的每个cpp文件都会包含#include "stdafx.h"

-GI: 生成空的Implementation类.

-Idir: 指定idl编译器的搜索路径



这里要注意, 编译选项是大小写敏感的.



注:

发现在编译idl文件时, IDL文件中的#define, #ifdef, #endif等行必须从

第一列开始, 否则编译器会报错.

发信人: Mentoya (学习TAO中~), 信区: DOC

标 题: TAO使用指南 -- 名字服务

发信站: BBS 水木清华站 (Sat May 10 22:11:17 2003), 转信



名字服务(Naming Service,不过大家叫的更多的是命名服务)是CORBA的

最基本的服务之一。名字服务很简单,没有什么可说的。不过TAO对标准的名字

服务做了一个有趣的扩展,即可以利用multicast来得到名字服务。不过个人认

为除了方便了那么一点点之外,用处不大。而如果当局域网内有多个主机同时

运行名字服务时,会造成混乱。

此外,TAO还提供了NT_Naming_Service,可以将名字服务注册为NT的服务。



一. 启动名字服务

名字服务的文件名为:Naming_Service.exe,它的启动参数有:

% Naming_Service [-ORBNameServicePort nsport]

[-o ior_output_file]

[-p pid_file_name]

[-s context_size]

[-t time]

[-f persitence_file_name]

[-b base_address]

[-m (1=enable multicast responses,0=disable(default)]



-ORBNameServicePort nsport:指定名字服务监听multicast包的端口号。

只有在使用了'-m 1'时才有效.

-o ior_output_file: 指定文件名, 用来保存名字服务的根上下文的IOR.

-p pid_file_name: 指定文件名,用来保存名字服务程序的进程id

-s context_size: 当创建上下文时, 指定新上下文使用的哈希表的大小, 默认1024

-t time: 名字服务监听的时间, 单位:秒. 默认: 无限

-f persistence_file_name: 指定文件名, 用来存放名字服务中被绑定的对象引用.

-m (1=enable multicast responses,0=disable(default): 是否使用多播功能.



运行名字服务时, 可以使用-ORBEndpoint参数来指定其运行的端点(有关

-ORBEndpoint的详细内容参见文档: $TAO_ROOT\docs\ORBEndpoint.html):



Naming_Service -ORBEndpoint iiop://localhost:2809 -m 0

(名字服务在本机的2809端口监听请求, 不使用多播方式)



二. 访问名字访问

这里均假定使用Naming_Service -ORBEndpoint iiop://localhost:2809 -m 0

来启动名字访问. 客户端有多种方法来访问名字服务:

第一种方法:

启动客户程序时用corbaloc指定初始引用:

MessengerServer -ORBInitRef
NameService=corbaloc::localhost:2809/NameService

在MessengerServer源程序中, 直接使用:

orb->resolve_initial_references("NameService");

来得到名字服务.



第二种方法:

客户程序启动时不带参数:

MessengerServer

而在MessengerServer源程序中, 使用:

orb->string_to_object("corbaloc::localhost:2809/NameService");

来得到名字服务.



三. TAO_Naming_Client和TAO_Naming_Server类:

1. TAO_Naming_Client类: 将访问名字服务部分的代码进行了封装. 使用方法:

//---------------------------------------------

#include <Naming/Naming_Utils.h>



TAO_Naming_Client naming_client;

if (naming_client.init(orb.in()) != 0)

{

cerr << "Could not initialize naming client." << endl;

return 1;

}

// 解析

CORBA::Object_var obj = naming_client->resolve(name);

// 绑定

naming_client->rebind(name, obj_ref.in());



2. TAO_Naming_Server类: 使用该类, 可以将名字服务功能集成到自己的应用

程序中.

有关TAO_Naming_Server类的使用方法, 见: 咦, 这个例程不在TAO的标准包

中, 是OCI公司的examples. 我硬盘上的这个忘了是从那里下载的了, 如果有人需

要的话给我写信好了.



四. 名字服务工具

在$TAO_ROOT\utils目录下, 有NamingViewer和nslist两个名字服务的工具.

有兴趣的话编译出来玩玩.:-)
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条