源碼下載地址見文章最後 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