JOLT的配置与编程简介
开发建立一个 JOLT 客户端访问 BEA Tuxedo 的应用服务的主要的步骤,可以描述以下的过程(参见下图)

1、 确认已经安装 BEA Jolt 系统
2、 首先要建立或已经存在一个BEA Tuxedo 系统的一个应用服务
3、 利用Bulk Loader(批量装载)工具装载 BEA Tuxedo 应用服务到 Jolt Repository
Database
1) 使用 Bulk Loader:
jbld 是一个java 程序,在运行 jbld 命令以前检查环境变量 CLASSPATH 是否指定了 jolt 类的路径(jolt.jar、joltadmin.jar),如果没有指定这个环境变量,java 虚拟机不能够定位到任何的 jolt classes
** 激活Bulk Loader:
在提示符下输入以下命令(带上正确的选择项):
java bea.jolt.admin.jbld [-n]
[-p package]
[-u usrname]
[-r usrrole]
//host:port filename
选择项
|
描 述
|
-u username
|
指定用户名(默认为你的帐户名称,如果安全要求强制)
|
-r usrrole
|
指定用户的角色(默认为:admin,如果安全要求强制))
|
-n
|
使输入文件依靠当前的接口服务库有效;不使接口服务库变动更新。(可选)
|
-p package
|
接口服务库包的名字(默认为:BULKPKG)
|
//host:port
|
指定 JRLY 或者 JSL 的地址(主机名字和IP的端口)(必须的)
|
Filename
|
指定包含定义服务的文件名。(必须的)
|
**批量装载文件 - the Bulk Loader File
Bulk Loader File 是一个定义服务和关联参数文本文件,Bulk Loader装载定义在the Bulk Loader File(批量装载文件)中的服务到 jolt 接口服务库中(默认的包是:BULKPKG)。
2) Bulk Loader File 的语法
每一个服务定义是由服务属性和参数组成的:属性和参数都有一个要设置的数字,每一个属性描绘都通过一个关键字和一个值
关键字分为两层:
◎ Service_level (服务层)
◎ Parameter_level (参数层)
* 关键字的指导方针
* jbld 程序读取服务定义文本文件,关键字的用法遵守下表的指导方针:
指 导 方 针
|
举 例
|
每个关键字都必须跟随一个等号(=)和一个值
|
正确: type=string
错误: type
|
每一行只允许有一个关键字
|
正确: type=string
错误: type=string access=out
|
任何一行都不能忽略等号(=)
|
正确: type=string
错误: type string
|
确定的关键字只接受一个合理设置的值
|
访问关键字只支持以下这些值:
in,out,inout,noaccess
|
装载导入文件能够包含多服务定义
|
service=INQUIRY
<service 的关键字和值>
service=DEPOSIT
<service 的关键字和值>
service=WITHGRAWL
<service 的关键字和值>
service=TRANSFER
<service 的关键字和值>
|
每一个服务定义都由多个关键字和值组成
|
service=DEPOSIT
export=true
inbuf=VIEW32
outbuf=VIEW32
inview=INVIEW
outview=OUTVIEW
|
◎在 Bulk Loader 文本文件中关键字的顺序
一个服务定义必须以 service=<SERVICE_NAME> 开始,服务如果是采用 CARRAY 或者是 STRING 类型的 BUFFER,在服务中只有一个参数。在服务中使用的是一个CARRAY类型的BUFFER则推荐参数使用CARRAY数据类型;在服务中使用的是一个STRING类型的BUFFER则推荐参数使用STRING数据类型。
下表是包含使用服务层关键字和每一个可接受的值的指导方针
* 服务层的关键字和值的用法
关 键 字
|
值
|
service
|
任何 BEA Tuxedo 服务名字
|
export
|
true 或 false (默认值为:false)
|
Inbuf / outbuf
|
选择下列这些 BUFFER 类型中的一种
FML FML32 VIEW
VIEW32 STRING CARRAY
X_OCTET X_COMMON X_C_TYPE
|
inview
|
任何输入参数的view 名字
这个参数是可选的,只有在下列一种BUFFER类型被用到时:
VIEW、VIEW32、X_COMMON、X_C_TYPE
|
outview
|
任何输出参数的 view 名字
|
* 参数层关键字和值的用法
一个参数是从 param=<PARAM_VALUE>,当遇到另一个参数 param 或是另一个服务 service就结束了。参数关键字是可以任何顺序的。
下表是包含使用参数层关键字和每一个可接受的值的指导方针
关 键 字
|
值
|
param
|
任何参数名
|
type
|
byte
short
integer
float
double
string
carray
|
access
|
in
out
inout
noaccess
|
count
|
出现的最大数值(默认值是1),当这个值无限时为0,仅用在
Repository Editor 格式化测试屏幕
|
3)疑难问题的解决
如果你使用 Bulk Loader 批量装载工具时遇到了一些问题,参阅下表:
一个完整的Bulk Loader 批量装载工具错误消息和解决方案
If 。。。。。。
|
Then 。。。。。。
|
数据文件没有找到
|
检查并确认路径是否正确
|
关键字无效
|
检查并确认关键字对于 package、service、parameter
|
关键字的值是空
|
为关键字赋值
|
值无效
|
检查并确认参数分配的值在参数范围之内
|
数据类型无效
|
检查并确认参数使用的类型是否有效
|
Bulk Load data 的例子:
下列列表包含一个例子数据文件,这个例子装载 TRANSFER、LOGIN、PAYROLL服务到默认的 BULKPKG 包。
批量装载数据样本:
service=TRANSFER
export=true
inbuf=FML
outbuf=FML
param=ACCOUNT_ID
type=integer
access=in
count=2
param=SAMOUNT
type=string
access=in
param=SBALANCE
type=string
access=out
count=2
param=STATLIN
type=string
access=out
service=LOGIN
inbuf=VIEW
inview=LOGINS
outview=LOGINR
export=true
param=user
type=string
access=in
param=passwd
type=string
access=in
param=token
type=integer
access=out
service=PAYROLL
inbuf=FML
outbuf=FML
param=EMPLOYEE_NUM
type=integer
access=in
param=SALARY
type=float
access=inout
param=HIRE_DATE
type=string
access=inout
4、 使用 Jolt Repository Editor 编辑器定义和配置应用服务
1) Repository Editor
Repository Editor是一个有效地可下载的 JAVA Applet 应用程序,Jolt Repository 主要是用于 Jolt 翻译 JAVA 参数到一个 BEA Tuxedo BUFFER 类型中;当一个 BEA Tuxedo 服务加载到 Repository,而且必须要 Export,这样 Jolt Server 才能确保客户端请求从 Jolt Client能够完成。
2) Repository Editor 窗口

3) Repository Editor 窗口描述
窗口各部分
|
功 能
|
1、文本编辑诓
|
输入文本、数字、或者是文字数字的字符,例如:“Service Name”,“Input View Name”,server name,
或者是 port number,在上图中的“Service Name”
|
2、下拉框列表
|
显示列表使用一个下拉框列表,在上图中的:“Input Buffer Type”或者是“Output Buffer Type”
|
3、显示列表
|
从一个列表中选择预定义项,例如:参数列表,
|
4、命令按钮
|
激活一个操作,例如:显示一个包的窗口;服务窗口;或者是包的组织,在上图中包括:“Save Service”、“Test”、“Back”、“New”、“Edit”、“Delete”
|
5、单选按钮
|
只选中一个选项,一次只能存在一种状态,例如: Export Status只能是“Unexport”或者是“Export”。
|
4)启动Repository Editor
在启动Repository Editor前,确认已经安装了所要求的最小化,Jolt Server 和 Jolt Client,可以用 JavaSoft 的 appletviewer 或者是用你的浏览器中任何一种方式都可以启动Repository Editor。
* 用 Java appletviewer 启动Repository Editor
设置 Jolt Class 的CLASSPATH的环境变量。
◎从本地启动Repository Editor
appletviewer <full-pathname>/RE.html
◎从WEB服务器远程启动Repository Editor
appletviewer http://<www.server>/<URL path>/RE.html
* 用浏览器启动Repository Editor
◎ 从本地启动的RE页面
设置 Jolt Class 的CLASSPATH的环境变量。
file:<full-pathname>/RE.html
◎ 从WEB Server 启动Repository Editor
确保 CLASSPATH 不包括 Jolt Class 的路径
不设置 CLASSPATH
http://<www.server>/<URL path>/RE.html
注意:在打开这个文件之前,修改在 RM.html的applet codebase parameter 匹配你的Jolt Class 的路径
* 登录到Repository Editor
完成上述启动步骤后,就会显示下图:

◎ 在SERVER中输入主机的机器名或是主机的IP,然后在 PortNumber中输入主机启用的通信端口号
注意:除非你登录通过 Jolt Relay,相同的端口号通常用于配置 Jolt Listener,查阅UBBCONFIG 文件的附加信息
◎ 输入BEA Tuxedo应用的口令
在依赖认证的等级上,完成以下两步:
输入BEA Tuxedo的User Name 和 User Password,然后 Packages、Services、
Log Off 按钮就可以激活。
注意:查看JoltSessionClass的附加信息

* Repository Editor 登录窗口的描述
选 项
|
描 述
|
Server
|
服务器名字或者是服务器的IP
|
Port Number
|
一个十进制的端口数值
|
User Role
|
BEA Tuxedo的用户角色,至少要求 BEA Tuxedo认证等级是 USER_AUTH 或者是更高。
|
Application Password
|
BEA Tuxedo 超级管理员的口令
|
User Name
|
BEA Tuxedo用户标识,第一个字符必须是一个alpha字符
|
User Password
|
BEA Tuxedo 的口令
|
Packages
|
访问Packages的窗口
|
Services
|
访问Services的窗口
|
Log Off
|
中断与服务器的连接
|
5、 用 Jolt Class Library 建立一个客户端应用
在典型的需要web enble的3层OLTP系统中,基于Bea中间件的解决方案是:Browser → WebLogicServer → Tuxedo → RDBMS, 整个流程图如下:
Web Browse
(Http) |
|
Servlet
|
JSP
|
JDBC
|
EJB
|
BEAWebLogic Server
|
|
JOLT
|
TUX APP
|
BEA TUXEDO
|
TUX APP
|
RDBMS
|
Jolt Protocl
|
流程说明:
Browser发送Post Form数据到Weblogic中,Servlet接受Post 数据,通过JNDI去查找SessionPoolManager名,并传递服务,此时WebServer的SessionPool通过Jolt Protocl与Bea Tuxedo服务连接并通讯,BeaTuxedo 服务接受来之Webserver的请求,并处理后返回,WebServer接受结果返回到WebBrowse显示. 根据此流程创建一个完整程序的流程如下:

在这个流程中BEA Jolt是Java程序与Tuxedo APP(C程序)之间连接通讯的桥梁。
所有的Tuxedo APP对C客户端而言,只要服务START,C客户端即可调用。但是对通过Jolt协议访问的Java客户端,必须在Jolt Repository(Jolt资源库)中注册,并导出(Export),
Jolt Client才可以调用该服务,否则将提示:Service not available.
在这个流程中,他们之间的关系如下图所示:

JOLT CLIENT
其中Repository Editor是BEA提供的一个GUI界面,用于增加和删除提供给Jolt Client 的TUXEDO Service。其全称为Jolt Repository Editor. 运行%Jolt_home%/udataobj/jolt/re.html
可进入该界面。

在此Editor中用户可增加删除Jolt Repository 中的Service,但只有标志为Export的Service才能被Jolt Client调用。

注意:在安装Jolt时,其安装目录必须选在Tuxedo安装目录下,(如D:/bea/tuxedo),否则即使进入了Editor界面,但无法打开Service编辑窗口。
更具体信息请参照Tuxedo Jolt 帮助文档。
Jolt Client:
Jolt Client 可以是纯Java程序,也可以是Browser 通过Servlet调用Tuxedo Service。
无论那种方式,如果调用Tuxedo Service其编程都有固定的模式。
1. Bind the client to the TUXEDO environment using the JoltSessionAttributes class.
2. 通过JoltSessionAttributes将客户端绑定到TUXEDO环境中。
3. Establish a session.(建立一个session)
4. Set variables.设置必要的参数
5. Perform the necessary transaction processing.建立必要的transaction进程.(针对有数据操作而言)
6. 调用服务.
7. Log the client off of the TUXEDO system.断开连接
下图是一个比较详细的例子:

在这里JoltRemoteService建立Jolt Client 与的Jolt Repository 联系.
To use a JoltRemoteService object, the programmer simply:
_ Sets the input parameters
_ Invokes the service
_ Examines the output parameters
在JOLT客户端应用中的事务处理使用J2EE的JTA实现Transaction,但是J2EE中的UserTransaction与后台Tuxedo的事务不是一致的,因此所有的事务建议在Tuxedo程序或者PROC*C程序中完成起始。