轻松利用powerbuilder和easerver搭建三层架构程序
作者:坏人张,发表时间:2004-9-19
powerbuilder是在c/s应用中被普遍使用的开发工具,是公认的高效率的图形化4gl工具。easerver是集动态页面发布和事务处理于一个身的企业级应用服务器。这二者的结合可以构成多层应用的开发和提交环境,开发人员可以不离开这个集成的开发环境进行应用的开发、调试、提交和运行。
easerver中包括动态页面服务器powerdynamo和事务处理服务器jaguar cts,这两者的结合使easerver成为发布动态网页和处理电子商务的应用服务器,支持多种组件类型,如com、corba、javabean/ejb和powerpuilder。它的一个更加显著的特点是支持xml和j2ee。
powerbuilder和easerver的结合能使企业在以下方面获得成功:
● 从客户/服务器升级到分布应用。
● 开发web和internet的电子商务应用。
● 支持建造企业门户的基础。
在本例中,作者介绍了一个如何利用powerbuilder和easerver来建立三层架构应用程序的范例,涉及到知识有:
1.如何在easerver中配置数据库的连接
2.如何在powerbuilder中创建easerver组件(easerver component)
3.如何在powerbuilder中生成easerver代理对象(easerver proxy)
4.如何在powerbuilder中实现三层结构应用程序的连接
至于easerver的安装与配置等话题则不在此文讨论范围之内,详情可以到http://sybooks.sybase.com/站点查找相关的文档。
在正式介绍本例以前,请确认在你的机器上已经成功安装了easerver和powerbuilder,以及任意一种数据库环境。
本例使用的开发环境为:
操作系统
windows server 2003 企业版
数据库
ms sql server 2000 企业版
开发环境
easerver5.1开发版、powerbuilder9.0企业版
其中easerver5.1开发版可以从http://www.sybase.com上下载到。
实现过程:
1. 在easerver中配置数据库的连接
要在组件中实现对数据库的访问,在组件内部仍然与平时编写c/s应用一样,使用同样的连接代码,即指定sqlca的各个属性的值,然后调用connect using sqlca即可,但是与c/s应用不同的时,连接操作是在应用服务器上执行的,即easerver所在的服务器,所以有两个需要注意的地方:
1) 应用服务器上已经配置了与数据源的连接(比如通过odbc),并确保组件内连接时使用的sqlca属性值为应用服务器上相关参数,而非本地连接,当然如果应用服务器和数据库服务器为同一台机器时则连接参数可相同。
2) 在easerver中已经配置了connection cache,并且确保可以ping成功。
以下将会为你详细介绍如何在easerver中配置connection cache的步骤:
启动easerver manager并连接到easerver,在左边的树节点中选择connection caches节点,如下图所示:
这时在右边详细信息栏中显示的是已经配置的connection cache列表,你需要建立一个新的连接缓存,通过在右键弹出菜单中的new connection cache菜单项,会弹出配置界面,由于每个版本的easerver中的配置界面不尽相同,所以这里列出了配置项的值,读者可以选择进行填写
配置项名称
配置项值
说明
connection cache name
pb_eas_dbconnection
可自定义的名称,任意填写
database type
sql_server
数据库类型,本例为sql_server
server name
pmdb_sql
为odbc数据源的名称,而不是数据库服务器的机器名
xa server name(optional)
空
选填项
user name
sa
password
sa的密码
database driver type
odbc
本例通过odbc连接,必须
dll or class name
odbc32.dll
连接驱动,必须
maximum connection pool size
75
为75
minimum connection pool size
0
默认
pooled connection idle timeout
300
默认
pooled connection refresh rate
600
默认
如果使用easerver5.1以下,会有一个refresh按钮,记得改写这些配置后,按此按钮以更新配置。
完整了以上的配置后,回到了easerver manager主界面中,在右边详细信息栏中会添加你刚才添加的数据联接缓存,通过右键菜单中的ping菜单试试看是否可以ping的通,如果通了的话则表明已经成功建立了数据连接缓存,不通的话,请查看以上步骤是否有遗漏的地方或者是否已经配置了odbc数据源。
2. 在powerbuilder中创建easerver组件(easerver component)
成功完整了步骤1之后,接下来可以进行powerbuilder编程了,在本例中powerbuilder中的对象结构如下图:
在powerbuilder中创建easerver组件的步骤:
1) 建立不可视类n_cst_eas
函数:long of_retrieve( )
代码:
long ll_rows
datastore lds_data
// profile pmdb
sqlca.dbms = “odbc”
sqlca.autocommit = false
sqlca.dbparm = “connectstring=dsn=pmdb_sql;uid=sa;pwd=mis”
connect using sqlca;
if sqlca.sqlcode <> 0 then return sqlca.sqlcode
lds_data = create datastore
lds_data.dataobject = ds_data
lds_data.settransobject( sqlca )
ll_rows = lds_data.retrieve()
disconnect using sqlca;
return ll_rows
2) 建立easerver组件
建立一个新的easerver component,各参数在以下几幅图示中显示出来:
按照以上步骤执行完毕后,最后执行deploy project以将组件提交到easerver,其中需要说明的是package name可以自定义的新的package(手工输入),也可是选择package列表中的已有package(在新建向导中可以选择)。
成功提交以后,可以在easerver manager发现刚刚提交的package已经在installed packages节点中显示出来了。
3. 在powerbuilder中生成easerver代理对象(easerver proxy)
建立一个新的easerver proxy,各参数在以下几幅图示中显示出来:
按照以上步骤执行完毕后,最后执行deploy project以在pb中生成easerver代理对象。
4. 在powerbuilder中实现三层结构应用程序的连接
以上已经完成了easerver组件和easerver代理对象的生成,接下来要进行的就是在powerbuilder应用程序中声明代理对象,进而可以在应用程序中执行easerver组件的方法了。
具体方法:
在powerbuilder建立一个应用,执行下列代码:
long ll_rows
connection lc_connect //连接对象
n_cst_eas ln_eas_proxy //easerver代理对象
lc_connect = create connection //创建连接对象
lc_connect.application = pb_eas_demopackage //package name,可以不写,具体使//用方法可以查阅pb帮助文档中关//于connection对象的帮助
lc_connect.driver = jaguar //连接对象对象的驱动,对于easerver,值为jaguar
lc_connect.userid = jagadmin //登录帐号,这里为管理员
lc_connect.password = 你的密码
lc_connect.location = iiop://server1:9000 //对应服务器server1的9000端口
lc_connect.connecttoserver( )
lc_connect.createinstance( ln_eas_proxy, n_cst_eas ) //创建easerver代理对象的实例
ll_rows = ln_eas_proxy.of_retrieve( ) //调用easerver组件的方法(函数)
messagebox(“total rows is:”, string( ll_rows ) )
destroy ln_eas_proxy
destroy lc_connect
到这里,已经完成了从配置到编码实现利用powerbuilder和easerver搭建一个典型的三层架构程序的过程,希望可以对你入门有所帮助,欢迎技术探讨,联系我。