为什么80%的码农都做不了架构师?>>>   

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

源码下载地址见文章最后

--------------------------------------------------------------------------------------------------------------------------------

1 Jolt通用调用包简介

1.1 调用Tuxedo服务的两种方式

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

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

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

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

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

1.2 Jolt通用调用包的目标

l 简化开发

仅需要编写少量的代码就可以完成Tuxedo服务调用。

l 屏蔽长短连接

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

l 配置灵活

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

1.3 Jolt通用调用包的组成

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

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

2 快速入门

本节的主要目地是:使开发人员快速掌握通过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 高级应用

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,使用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

转载于:https://my.oschina.net/gccr/blog/112405

对使用Jolt调用Tuxedo的一个简单的封装相关推荐

  1. Java通过Jolt调用Tuxedo服务

    Java通过Jolt调用Tuxedo服务 草木瓜 2006-6-1 ------------------------ 一.简介 ------------------------ 外部应用访问Tuxed ...

  2. java jolt调用tuxedo_Java通过Jolt调用Tuxedo服务 zz

    http://blog.csdn.net/liwei_cmg/archive/2006/06/02/769150.aspx http://blog.csdn.net/liwei_cmg/archive ...

  3. java jolt tuxedo_java通过jolt调用tuxedo服务.xls

    java通过jolt调用tuxedo服务.xls 还剩 20页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: ?private bea.jolt.poo ...

  4. java jolt tuxedo_Java通过Jolt调用Tuxedo服务

    Java通过Jolt调用Tuxedo服务 一.简介 ------------------------ 外部应用访问Tuxedo服务是很经常的事,一般有两种方法WTC和Jolt,网上很多关于Jolt调用 ...

  5. java jolt tuxedo_使用java通过jolt调用tuxedo

    先来段废话 很多东西都是成功前,觉得非常难:成功了之后,又觉得没什么,不值得记录下来.其实不是的,你成功了,后面还是有很多的未成功的新人的,所以必须要分享出来. 特别是一些用的人不多的技术.像tuxe ...

  6. go能否直接调用java_Go调用Java的一个简单例子

    由于Java世界里有非常丰富的开源应用模型和轮子,而这些正是Go世界里面最缺乏的东西,所以我首先考虑的就是如何在Go里面调用现有的Java代码.早上写了个简单的Go调用Java的例子,在winxp环境 ...

  7. java jolt tuxedo_java使用jolt调用tuxedo服务

    使用包jolt-1.0 import bea.jolt.JoltSession; import bea.jolt.JoltSessionAttributes; import bea.jolt.Sess ...

  8. java jolt调用tuxedo_Jolt调用Tuxedo服务,该怎么处理

    Jolt调用Tuxedo服务 JoltSession session; JoltSessionAttributes sattr; JoltRemoteService toupper; JoltTran ...

  9. Linux下Tuxedo配置以及Java调用Tuxedo

    前言 因为业务需求,需要对接某部门的Tuxedo数据接口,但是那边提供的技术支持很少,Tuxedo相关资料网上不是很完善,以下是个人对Java调用Tuxedo相关整合,为方便个人和大家学习,不完善之处 ...

最新文章

  1. codevs 1203 判断浮点数是否相等
  2. 2021-05-09
  3. 从不用 try-catch 实现的 async/await 语法说错误处理
  4. eset14 杀毒清除无提示
  5. ai外呼营销系统_为了让居民预约口罩少出门,长宁这个街道使用AI技术智能语音外呼系统...
  6. code block怎样导入整个文件夹_按需分配随时可用的在线开发环境:弹性容器+code-server踩坑记...
  7. 信息学奥赛C++语言:重组
  8. #C++初学记录(阶乘#递归)
  9. 团队作业—第二阶段08
  10. javaweb面试题2
  11. 电脑网络适配器WLAN丢失,怎么找回?
  12. [ZT]一个三十岁男人的婚姻思考(三)
  13. 安装分区助手,总是显示“分区助手已安装到你的电脑中,怎么办
  14. PHP在线客服系统源码
  15. LTE中REG和CCE概念
  16. java io流详解_一文带你看懂JAVA IO流,史上最全面的IO教学啦
  17. 请问机器学习算法岗中用户增长和推荐系统差别是什么呢?
  18. 三菱编程软件GX Works2_马立杰_新浪博客
  19. MATLAB安装优化工具包OPTI Toolbox
  20. 大数据基础架构Hadoop,终于有人讲明白了

热门文章

  1. 聚焦AI落地痛点,纵论跨域学习技术前沿和应用趋势 | CNCC技术论坛
  2. 原型机拱手让人,飞行器停售,谷歌创始人押注的飞行汽车,如今搁浅
  3. Mysql 共享锁(lock in share mode),排他锁(for update)
  4. 基本算法系列15天速成
  5. angularjs定义对集合进行过滤的过滤器
  6. 第八章 工厂方法模式
  7. redis info命令中各个参数的含义
  8. 设计前沿:16款扁平风格 iOS 7 图标设计
  9. JS中URL编码参数(UrlEncode)
  10. python变量如何声明_如何确定变量是否在Python中声明?