![]() |
|
| 网站首页 | 数据库教程 | web编程 | 服务器 | 程序设计 | | ||
![]() |
||
|
||
|
|||||||||
建立和部署 PowerBuilder 组件 | |||||||||
作者:佚名 文章来源:不详 点击数: 更新时间:2007-8-16 ![]() |
|||||||||
建立和部署PowerBuilder组件
(石骁騑 2001年07月20日 17:56) 一、开发组件在介绍如何将PB组件部署到Jaguar CTS服务器之前,首先介绍一下如何利用PowerBuilder 7开发一个组件。这一步非常重要,因为在这里要设定许多选项,而这些选项又最终直接影响到PB组件的部署工作。 PB开发的Jaguar组件是具有一些特殊事件和属性的特殊的PB非可视化对象(NVO)。这个对象除了要编写代码和在PB中设置一些属性之外,在Jaguar中还需要设定一些特殊的选项来控制组件的行为,而这些选项的设置即可通过手工设定也可通过PB的Jaguar 组件向导来设定其中的一大部分。 采用Jaguar组件向导创建组件,需要回答一系列的问题和设置一些选项,对这些设置和选项的理解是非常重要的,因为它直接影响部署到Jaguar服务器中组件的行为。 利用PowerBuilder创建Jaguar组件时一般都采用Juguar组件向导,该向导引导你完成一系列的设置来创建一个新的Jaguar组件。在向导引导过程中输入的值最后将影响到组件的事件、属性和部署选项。所以在该向导过程中,必须注意这些选项和属性的值。下面我们就开始一步步利用组件向导来创建一个Jaguar组件,对涉及到的所有选项和属性作详细介绍。 选择“File | New” 菜单或者直接在工具条中选择“New”。PowerBuilder 弹出一个由许多标签组成的对话框。选择“Start Wizards”标签,再选择“Jaguar Component”,然后点击“OK”按钮,Jaguar组件向导启动。在第一次创建组件时需要上述步骤,一旦利用该向导创建了一个组件应用,以后只需要在“Object”标签下创建另外的组件。 向导的第一个屏幕首先介绍了该向导的功能和如何通过客户端应用来存取Jaugar对象。点击"Next"按钮,出现下一个对话框,这个对话框总结了向导需要的所有信息和将要回答的问题,点击"Next"按钮,出现如图1所示对话框。该对话框提示用户输入应用的名称和库路径。在这里可以取一个能反映组件功能的应用名称,也可以选用默认的名称“genapp”,最后确认库路径,并点击"Next"按钮。下一个屏幕显示库路径,如果需要的话,可以改变它,点击"Next"按钮,弹出如图2所示对话框。该对话框要求用户输入PowerBuilder的非可视化组件的名称和描述信息,系统默认为应用名称前加"n_"前缀。点击"Next"按钮,弹出下一个对话框。该对话框要求用户输入Jaguar组件名,这个名称默认为和PowerBuilder对象名相同但用户也可以改变它。点击"Next"按钮,下一个屏幕要求用户输入连接Jaguar服务器的一些信息,如图3所示。当部署组件到Jaguar服务器时,PowerBuilder需要这些信息来取得和服务器的连接。如果Jaguar组件服务器运行在本地机器上,则在“Server name”处填入localhost,如果组件服务器没有运行在本地,则需要输入服务器的的名称或其IP地址。端口号为在Jaguar服务器创建时指定的监听器端口号,确省为9000。登陆账号默认为jagadmin,口令默认为空(Jaguar服务器管理员可以更改默认的登陆账号和口令),鼠标单击"Next"按钮。
图1 指定新的应用名称和库
图2 指定组件名和描述信息
图3 指定服务器信息 下一个屏幕要求用户为组件指定一个包名。什么是包?一般来说,一个包就是一组功能相关的对象的集合。所有部署到Jaguar服务器的组件都需要一个包名。在这里可以手工输入一个包名,也可以取Jaguar服务器上已经存在的一个包名,点击"Next"按钮。 下一个屏幕要求用户选择组件的类型。这里有三种类型供选择:标准型(一般组件)、共享型(共享实例)和服务型(在服务器启动时装入,为Jaguar客户端或组件执行后台服务)。一个共享组件的“sharing”属性被设置为TRUE。服务组件不仅被标志为共享,而且还有另外一些方法,如运行,启动和停止等。选择需要的组件类型,点击“Next”按钮。 9
7
3
1
2
3
4
5
4
8
:
下一个屏幕用来指定实例缓冲选项,如图4所示。在选择“不支持(not supported)”情况下,可以通过在组件的“CanBePooled” 事件中添加代码来改变组件实例为支持缓冲。也可以通过在Jaguar manager中改变组件的缓冲属性。选择所需要的缓冲属性,点击“Next”按钮。
图4 指定组件的实例缓冲选项 下一个屏幕用来指定事务支持(Transaction Support)和自动分界/自动清除(Auto Demarcation/Deactivation)选项。这两个属性也可以通过Jaugar manager来直接设定。下面对几种事务分别作一下解释。
如果选中“自动分界/清除”选项则指该组件在它的任何一个方法被调用后自动使之不活动;否则,组件直到收到一个 SetAbort 或者 SetComplete 调用才使之不活动。选择完毕后,点击“Next”按钮,下一个屏幕用来指定界面选项,这些选项容许你修改组件界面的方式。在这里强调一点,除非你对组件有特殊的需求或者对这些选项具有非常清楚的理解,一般建议不要改变这些选项,保持默认值。点击“Next”按钮。 下一个屏幕用来选择远程调试(remote debugging)和现场编辑(live editing)。远程调试选项在开发期间是非常有用的,但是到了最终释放代码时,不要选中该选项,否则,用户可以看到你的组件代码。现场编辑指Powerbuilder每次在对组件画板作过改变保存后都自动部署组件到Jaguar。选择需要的选项,点击“Next”按钮。 下面将进行PBD生成的一些选项选择。如果选择第一项,则PowerBuilder将从所有库列表中的PBD创建一个单一合并的PBD,然后还需要为这个合并的PBD另外指定一些选项。如果在组件的数据窗口中有一些动态引用(如用到了数据窗口),则应该选中第二个选项(include unreferenced objects)。输入一个合并后的PBD的名称和使用的资源文件PBR的名字,这个资源文件能使组件具有和通常意义上的Powerbuilder应用一样的功能。点击“Next”按钮。 最后,向导显示出所有的选项并为这个组件生成一个“工作计划(to_do)列表”,点击“Finish”按钮,至此,该组件将被生成。 二、修改PB对象为组件有时候需要将一个已经存在的PB对象升级为一个组件。这时就需要增加一些事件,还需要为部署该组件创建一个工程。 1. 添加事件将一个传统的PB对象升级为一个Jaguar组件,需要另外添加一些事件,包括 activate, deactivate 和可选的canBePooled事件。
2. 创建一个部署工程一旦将一个传统意义上的PowerBuilder对象升级为一个Jaguar组件,还需要另外创建一个部署工程,在下一节中对其进行详细讨论。 三、部署组件的过程和选项在客户端应用程序使用组件之前,必须将该组件部署到一个应用服务器中。在Powerbuilder 7中,可以利用PB和Jaguar的集成特性,在PB中每次对组件进行修改保存后,直接将其部署到Jaguar服务器中。这种特性在PB中被称为现场调试(Live Editing),这在开发和测试环境中是非常有帮助的,但不能将其应用到实际应用环境中。 9
7
3
1
2
3
4
5
4
8
:
1. PB组件的组成
2. 部署过程 下面来看将一个Powerbuilder组件部署到Jaugar服务器上时,系统会进行那些操作。一般部署一个组件包括在Jaguar知识库(Repository)中设置一些文件和属性,这样当一个客户端应用请求时组件才可以被找到、定位和执行。这里需要注意的是最好不要手工操作Jaguar知识库中的文件,但是如果你对这些属性文件了解较多,则可以直接编辑这些属性文件,非常方便快捷。
在Jaguar CTS目录下,有一个文件夹叫“Repository”。该目录包括了所有部署到该服务器的PB组件的相关文件。Java组件(.calss文件)的可执行代码在Jaguar CTS 3.5\java\classes 目录下,不在Repository目录下。
每一个组件或者包都有一系列的相关属性属性文件。在Repository目录下包含了许多以“.props”为后缀的文件,这些文件保存了Jaugar的安装(包括Server)、包和组件的各个方面的信息。在jaugar manager中看到的所有属性就是这些.props文件。Repository目录是这样组织的,每一个Powerbuilder组件的属性文件在包目录下的组件目录里面,包的属性在包目录下面的.props文件中。
编译过的PowerBuilder代码将被添加到知识库repository目录下的“Components” 目录。部署到Jaugar的每一个包在Componets目录下都有一个子目录,包中的每一个组件都有一个目录存放在包目录的下面。如果组件是PowerBuilder组件,那么就会有一系列的以“C”开头的目录在components目录下。
IDL描述了一个组件是如何被客户端应用调用的。在Repository目录下的IDL目录下,可以看到Jaguar组件的IDL。IDL文件是以包为单位组织的,在IDL目录下每个包具有一个子目录,里面包含了所有包中组件的IDL文件。
每当一个PowerBuilder组件被部署到Jaguar服务器上时,它都被放置到了repository目录下的一个新的目录,这些目录以C1开始顺序命名,可以在repository目录下的Components目录下看到这些目录,其中每一个目录都包含了编译过的Powerbuilder代码。Jaguar对这些目录的管理是通过组件的属性-“com.sybase.jaguar.component.pb.cookie”进行的,该属性的值就是目前使用的“cookie”,也就是子目录号。我们可以删除所有数字比它小的目录而不会对组件构成任何影响,这样可以释放许多的磁盘空间出来。 三、Jaugar工程向导1. 创建一个Jaugar工程创建一个组件后,还需要一个Jaguar工程来部署组件。创建一个Jaguar工程的步骤和前面谈到的创建一个组件的过程很相似。在Powerbuilder中选择“File | New” ,然后在“Projects”标签中选择“Jaguar Component Wizard”,和组件向导不同的是在工程(Projects)标签,而组件向导则在对象(Objects)标签。 建立一个部署工程以后,就可以在Powerbuilder中打开这个工程选择“Design |Build Project”菜单来部署组件到Jaguar服务器。 2. 现场编辑在第一次利用组件向导创建一个组件时,可以选择“Live Editing”这个选项。然而,如果在第一次创建组件时没有选择该选项,那么以后还有没有办法选择该选项呢?回答当然是有,可以通过下面的步骤来使该功能有效。 9
7
3
1
2
3
4
5
4
8
:
3. 部署Powerbuiler组件到另外的服务器 在实际开发中,经常遇到这样的问题,利用开发版部署Powerbuiler组件到另外的服务器时,经常出现不能部署的问题。主要原因可能是: 1. 在PowerBuilder开发环境中想存取商业服务器。 “现场编辑”选项在开发环境是一个非常有用的选项,但它不适于在商业服务器上工作。设想一下,如果每一个开发者对商业服务器均有部署存取权限,那么其中任何一个人的一个小小错误都将导致非常严重后果。 2. 远程地址 另外一种情况就是将组件部署到不是本机的远程网络服务器上,这意味着目前的PB开发环境没有对目标远程服务器的存取权限。 四、包部署相对于从Powerbuilder部署组件,还有一种部署组件的方法就是包部署,也就是从开发服务器上将包导出到一个文件,然后再将其导入到目标服务器上。 1. 利用Jaugar manager创建导出文档Jaguar Manager提供了将一个包导出到文件的功能,该文件包含了部署组件所有有关的文件和信息,并以一个 .JAR (java 文档)的文件格式保存。下面是具体步骤:
2. 安装组件一旦创建了一个名为jar的文件,就可以将其安装到任何一个Jaguar服务器上。安装方法如下:
五、同步部署组件前面介绍的包部署的方法是一个非常简单和有效的方法,然而它却存在一些缺点,如在一些大规模部署的情况下,就显得不是很适用,非常的烦琐。在这种大规模部署的情况下,另外的一种称之为同步(synchronization)的方法就显示出了它的优越性。同步即可以在集群(cluster)和服务器(server)层面,也可以在包和组件层面上操作。 同步可以在任何可以连接到的服务器上进行,也可以在一个集群的服务器上执行。集群同步必须在集群的主服务器上进行。下面是同步部署组件的步骤:
结论深刻理解部署Jaguar组件的各种选项是非常重要的。在Powerbuilder开发环境下,可以利用“Live Editing”或者从部署工程中部署组件。在商业环境下,不能从开发环境中部署组件,这时可以选择导出/导出包的Jar文件的方法或者同步的办法来完成。 9
7
3
1
2
3
4
5
4
8
:
|
|||||||||
文章录入:admin 责任编辑:admin | |||||||||
【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 网站地图 | 管理登录 | | |||
|