源码下载地址见文章最后 css
-------------------------------------------------------------------------------------------------------------------------------- java
在程序开发中,有两种方式能够调用Tuxedo服务,分别是: 编程
1. 用C/C++来编写程序,经过WSL来调用Tuxedo提供的服务。 服务器
2. 用Java经过Jolt包来编写程序,经过JSL来调用Tuxedo提供的服务。 网络
第一种方式使用C/C++语言开发,效率高,可是程序调试困难,容易出错。 session
第二种方式使用Java语言开发,运行效率相对于第一种方式略有不足,可是开发容易,调试简单。可是为了提供更大的灵活性,使用Jolt方式对长链接和短链接调用提供了两套彻底不一样的API, 并发
l 简化开发 app
仅须要编写少许的代码就能够完成Tuxedo服务调用。 编码
l 屏蔽长短链接 spa
对于长链接或者短链接,开发人员编写的代码是同样的。长链接和短链接的切换,仅须要修改一下配置文件便可。
l 配置灵活
提供多种配置方式,既能够经过文件配置,也可让开发人员编程配置。
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文档。
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" );
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" );
一般,Jolt通用调用包使用单独的一个配置文件,可是Jolt通用调用包也能够与其它应用程序共用同一个配置文件。
由于Jolt通用调用包的配置文件是XML格式的,并且根结点为<Root>,二级节点为<Jolt>。因此任何使用<Root>做为根结点的配置文件,均可以与Jolt通用调用包共用配置文件(如空中选号系统)。
Jolt通用调用包的配置文件保存的编码格式一概为GB2312,使用ASCII,ISO8859-1,UTF-8,UTF-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