JOLT的配置与编程简介
开发建立一个 JOLT 客户端访问 BEA Tuxedo 的应用服务的主要的步骤,可以描述以下的过程(参见下图)
![](https://p-blog.csdn.net/images/p_blog_csdn_net/brucelee0224/liucheng.bmp)
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
窗口
![](https://p-blog.csdn.net/images/p_blog_csdn_net/brucelee0224/4a71b32f7e1a47438e6bde63cc80c001.gif)
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
完成上述启动步骤后,就会显示下图:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/brucelee0224/0b5a0af282fc4616a3d1f852e79ad086.png)
◎ 在SERVER中输入主机的机器名或是主机的IP,然后在 PortNumber中输入主机启用的通信端口号
注意:除非你登录通过 Jolt Relay,相同的端口号通常用于配置 Jolt Listener,查阅UBBCONFIG 文件的附加信息
◎ 输入BEA Tuxedo应用的口令
在依赖认证的等级上,完成以下两步:
输入BEA Tuxedo的User Name 和 User Password,然后 Packages、Services、
Log Off
按钮就可以激活。
注意:查看JoltSessionClass
的附加信息
![](https://p-blog.csdn.net/images/p_blog_csdn_net/brucelee0224/01d21a0a56314a0c980e317b61ed3c4d.png)
* 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
|
BEA
WebLogic 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显示. 根据此流程创建一个完整程序的流程如下:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/brucelee0224/1057e04c065c41d98ef1b893198067e6.png)
在这个流程中
BEA Jolt是Java程序与Tuxedo APP(C程序)之间连接通讯的桥梁。
所有的
Tuxedo APP对C客户端而言,只要服务START,C客户端即可调用。但是对通过Jolt协议访问的Java客户端,必须在Jolt Repository(Jolt资源库)中注册,并导出(Export),
Jolt Client才可以调用该服务,否则将提示:
Service not available.
在这个流程中,他们之间的关系如下图所示:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/brucelee0224/6a7e352914824b45b11c337cfeae70f3.png)
JOLT CLIENT
其中Repository Editor是BEA提供的一个GUI界面,用于增加和删除提供给Jolt Client 的TUXEDO Service。其全称为Jolt Repository Editor. 运行%Jolt_home%/udataobj/jolt/re.html
可进入该界面。
![](https://p-blog.csdn.net/images/p_blog_csdn_net/brucelee0224/50cb2f43bbcc49658c044c936a7a296e.png)
在此Editor中用户可增加删除Jolt Repository 中的Service,但只有标志为Export的Service才能被Jolt Client调用。
![](https://p-blog.csdn.net/images/p_blog_csdn_net/brucelee0224/cd317406003f44d5821f2a7ada5c0d6d.gif)
注意:在安装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.断开连接
下图是一个比较详细的例子:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/brucelee0224/ee02fef5c0d04adf9b6fdc8c0e4f1bcb.png)
在这里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程序中完成起始。