对使用Jolt调用Tuxedo的一个简单的封装


注:大约4年前,在上家公司封装的一个Jolt调用Texedo的包,并写的一个使用文档。不知道如今还有没有人使用Jolt这个东西了。

源码下载地址见文章最后 css

-------------------------------------------------------------------------------------------------------------------------------- java

1 Jolt通用调用包简介

1.1 调用Tuxedo服务的两种方式

在程序开发中,有两种方式能够调用Tuxedo服务,分别是: 编程

1. C/C++来编写程序,经过WSL来调用Tuxedo提供的服务。 服务器

2. Java经过Jolt包来编写程序,经过JSL来调用Tuxedo提供的服务。 网络


第一种方式使用C/C++语言开发,效率高,可是程序调试困难,容易出错。 session

第二种方式使用Java语言开发,运行效率相对于第一种方式略有不足,可是开发容易,调试简单。可是为了提供更大的灵活性,使用Jolt方式对长链接和短链接调用提供了两套彻底不一样的API 并发

1.2 Jolt通用调用包的目标

l 简化开发 app

仅须要编写少许的代码就能够完成Tuxedo服务调用。 编码

l 屏蔽长短链接 spa

对于长链接或者短链接,开发人员编写的代码是同样的。长链接和短链接的切换,仅须要修改一下配置文件便可。

l 配置灵活

提供多种配置方式,既能够经过文件配置,也可让开发人员编程配置。

1.3 Jolt通用调用包的组成

Jolt通用调用包仅有一个包:joltutility.jar。该包依赖于Oracle提供的jolt.jar包。

在开发时,将 joltutility.jar 和 jolt.jar 两个包引入工程便可。


快速入门

本节的主要目地是:使开发人员快速掌握经过joltutility.jar来调用Tuxedo服务的方法。


Jolt通用调用包对程序开发人员彻底屏蔽长链接和短链接,长链接和短链接的调用方式一致,只有在涉及到某种链接方式特有的设置才须要单独进行设置。


调用Tuxedo服务一共分六步:

第一步 配置

Jolt通用调用包存在两种配置方式:配置文件方式 和 编程自定义配置。


配置文件方式

一般,Jolt通用调用包须要经过配置文件来进行配置。配置文件的格式见附录

配置文件设置完成之后,在程序中进行配置加载该配置文件。一共有3种跟配置文件相关的配置方式:

l 在程序中指定配置文件

调用 JoltConfig.configure( cfgFilePath ) 静态方法,设置从cfgFilePath中读取配置。

l 在JVM的参数中指定配置文件

在进程启动的脚本中,为JVM的启动参数增长 -Djolt.configuration=cfgFilePath。这样程序会自动从cfgFilePath中加载配置。

l 使用默认配置文件

若是既不在程序中指定配置文件,也不在JVM的参数中指定配置文件,那么程序会自动从应用程序根目录下面的JoltConfig.xml文件中读取配置。


编程自定义配置

若是不想从配置文件中读取配置,也能够在程序中对配置类进行自定义设置。代码以下:

JoltConfig cfg = JoltConfig.newInstance();

// 短链接配置

BasicJoltConfig basicConfig = new BasicJoltConfig();

… … // 在这里对basicConfig进行设置

// 长链接配置

PoolJoltConfig poolConfig = new PoolJoltConfig();

… … // 在这里对poolConfig进行设置

cfg.setBasicConfig( basicConfig );

cfg.setPoolConfig( poolConfig );

// 自定义配置

JoltConfig.configure( JoltConfig cfg );




注:以上四种配置方法任何一种都可,并且只须要配置一次,一般咱们能够在进程刚启动时进行配置。


第二步 实例化一个JoltCaller对象

JoltCaller caller = new JoltCaller();


JoltCaller对象会根据配置文件中的配置,与Tuxedo服务器链接,并提供调用Tuxedo服务的功能。因此,若是想调用Tuxedo服务,首先要建立一个JoltCaller对象。


第三步 生成一个IJoltData对象


IJoltData data = JoltCaller.getJoltData( serviceName ); // 生成调用某一个服务的参数对象


IJoltData是向Tuxedo服务发送的参数对象的抽象,使用JoltCaller.getJoltData( serviceName )方法,能够生成某一个服务对应的参数象。。


第四步 设置调用参数


data.setString( "STRING", "HelloWorld" );


根据协议文档的内容,对第三步中生成的参数对象进行设置。


第五步 调用服务


data = caller.call( data );


经过调用JoltCaller对象的call( IJoltData )方法,能够调用Tuxedo服务,并返回结果。


第六步 处理返回结果


String s = data.getStringDef( "STRING", "defalut" );


根据协议文档的内容,获取Tuxedo服务返回的各个数据项,进行业务处理。


经过以上六步,就能够调用一次Tuxedo服务。各个类的详细说明,请参考附带的javadoc文档。

高级应用

3.1 长链接链接多个Tuxedo服务器

Jolt通用调用包在进行长链接调用时,对链接多个Tuxedo服务器提供了支持。在配置文件中能够添加多个Tuxedo服务器的配置(见附录),而后在程序中经过以下形式进行调用:


JoltCaller caller = JoltCaller.getInstance();

IJoltData data = JoltCaller.getJoltData( serviceName );

data.setString( "STRING", "HelloWorld" );

// sessionName就是指定的链接池名称,只有长链接会使用这个重载的方法,短链接使用该重载方法,sessionName不起做用。

data = caller.call( data, sessionName );

String s = data.getStringDef( "STRING", "defalut" );




3.2 短链接自定义调用Tuxedo服务的配置

Jolt通用调用包在进行短链接调用时,能够对每个服务的调用都进行自定义的设置,如:调用ServiceA时,咱们但愿链接服务器I,而且超时间设置为5秒;在调用ServiceB时,咱们但愿链接服务器II,而且超时时间设置为10秒。


经过以下的代码能够实现这个功能:


JoltCaller caller = new JoltCaller ();

BasicJoltConfig cfg = new BasicJoltConfig();

...... // 在这里进行自定义设置

// 这里生成的data就是按照自定义的配置生成的,不会使用默认设置了。只有短链接调用时才使用这个重载的方法,长链接调用时使用该重载方法,cfg不起做用。

IJoltData data = JoltCaller.getJoltData( serviceName, cfg );

data.setString( "STRING", "HelloWorld" );

data = caller.call( data );

String s = data.getStringDef( "STRING", "defalut" );



3.3 自定义配置文件

一般,Jolt通用调用包使用单独的一个配置文件,可是Jolt通用调用包也能够与其它应用程序共用同一个配置文件。

由于Jolt通用调用包的配置文件是XML格式的,并且根结点为<Root>,二级节点为<Jolt>。因此任何使用<Root>做为根结点的配置文件,均可以与Jolt通用调用包共用配置文件(如空中选号系统)。

附录 配置文件的格式

Jolt通用调用包的配置文件保存的编码格式一概为GB2312,使用ASCIIISO8859-1UTF-8UTF-16等编码方式保存时,加载配置文件可能会出错。


配置文件内容以下:


<?xml version="1.0" encoding="gb2312"?>

<Root>

    <Jolt>

        <!-- 是否使用链接池,true:使用 false:不使用 -->

        <usePool>false</usePool>

        

        <!-- 短链接设置 -->

        <commonSetting>

            <!-- Tuxedo服务器地址  -->

            <appAddress>//10.0.52.14:9988</appAddress>

            <!-- 应用密码 -->

            <appPassword></appPassword>

            <!-- 用户名 -->

            <userName></userName>

            <!-- 用户密码 -->

            <userPassword></userPassword>

            <!-- 用户角色 -->

            <userRole></userRole>

            <!-- 接收超时,单位秒 -->

            <recvTimeout>3</recvTimeout>

            <!-- 发送超时,单位秒 -->

            <sendTimeout>0</sendTimeout>

            <!-- Session超时,单位秒.JSL中的-T选项,通常对此设置为0 -->

            <sessionTimeout>0</sessionTimeout>

            <!-- 网络空闲超时, 若是设置0,Jolt链接JSH会采用 RETAINED模式;若是大于0,Jolt链接JSH会采用RECONNECT模式; -->

            <idleTimeout>0</idleTimeout>

        </commonSetting>

        

        <!-- 链接池设置 -->

        <poolSetting>

            <!-- 链接池项,设置多个链接池时,设置多个 poolItem 结点,不一样的结点用poolName来区分。能够每个Tuxedo服务器来创建一个链接池项。 -->

            <poolItem>

                <!-- 应用密码 -->

                <appPassword></appPassword>

                <!-- 用户名 -->

                <userName></userName>

                <!-- 用户密码 -->

                <userPassword></userPassword>

                <!-- 用户角色 -->

                <userRole></userRole>

                <!-- 接收超时,单位秒 -->

                <recvTimeout>3</recvTimeout>

                

                <!-- 首选地址列表,当有多个备选地址列表时,可使用多个 addr 结点 -->

                <primaryAddr>

                    <addr>//10.0.52.14:9988</addr>

                </primaryAddr>

                

                <!-- 备选地址列表,当有多个备选地址列表时,可使用多个 addr 结点 -->

                <secondaryAddr>

                    <addr>//10.0.52.14:9988</addr>

                </secondaryAddr>

                

                <!-- 链接池名称,不设置为默认链接池 -->

                <poolName></poolName>

                <!-- 最小链接数,即程序一启动时就创建的链接数 -->

                <minPoolSize>5</minPoolSize>

                <!-- 最大链接数,即同时并发调用的数量 -->

                <maxPoolSize>15</maxPoolSize>

            </poolItem>

        </poolSetting>

    </Jolt>

</Root>

下载地址: http://yun.baidu.com/share/link?shareid=2404381116&uk=3221528213

相关文章
相关标签/搜索