java jolt tuxedo_使用java通过jolt调用tuxedo
先来段废话
很多东西都是成功前,觉得非常难;成功了之后,又觉得没什么,不值得记录下来。其实不是的,你成功了,后面还是有很多的未成功的新人的,所以必须要分享出来。
特别是一些用的人不多的技术。像tuxedo现在用的人不多吧,也就一些银行电信旧系统占多,jolt又是tuxedo里的一个分支而已,用的人就更少了,导致我遇到困难时上百度基本找不到很多有用的信息,硕果仅存的也被现在铺天盖地的云计算、NoSQL所淹没。
先贴一段成功调用的代码,然后再详细说明。
成功调用的代码
public void testTamRecvFeeTest() throws Exception {
JoltSession session;
JoltSessionAttributes sattr;
JoltRemoteService passFml;
String userName = null;
String userPassword = null;
String appPassword = null;
String userRole = null;
String sendStr = new String("TAM_RECV_FEE");
sattr = new JoltSessionAttributes();
sattr.setString(JoltSessionAttributes.APPADDRESS,
"//132.121.80.202:45000");
sattr.setInt(JoltSessionAttributes.IDLETIMEOUT, 300);
session = new JoltSession(sattr, userName, userRole, userPassword,
appPassword);
passFml = new JoltRemoteService("QAM_CBS1_L1SVC", session);
passFml.setString("X_TRANS_CODE", sendStr);
passFml.setString("ROUTE_EPARCHY_CODE", "0020");
passFml.setString("TRADE_EPARCHY_CODE", "0020");
passFml.setString("TRADE_CITY_CODE", "0020");
passFml.setString("TRADE_DEPART_ID", "Z0020");
passFml.setString("TRADE_STAFF_ID", "Z999999");
passFml.setString("SERIAL_NUMBER", "18602017700");
passFml.setInt("PAYMENT_ID", 100001);
passFml.setString("TRADE_FEE", "0");
passFml.setString("CHANNEL_ID", "15000");
passFml.call(null);
JoltMessage jm = passFml.getOutputs();
String b = new String(jm.toString().getBytes("iso-8859-1"), "gbk");
String[] strPar = b.split(":");
String resultCode = "-1";
for (int i = 0; i < strPar.length; i++) {
System.out.println("item:" + strPar[i]);
if (strPar[i].split("\\[")[0].equals("X_RESULTCODE"))
resultCode = strPar[i].split("\"")[1];
}
passFml.clear();
session.endSession();
assertTrue(resultCode.equals("0"));
}
这篇文章只讨论java侧怎么调用,至于tuxedo侧的配置与搭建是不涉及的。默认是已经配置好。
调用要点
1、像JoltSession这些类,在Jolt.jar里,需要引入。这个jar,在tuxedo的安装目录可以找到。在weblogic的安装目录应该也可以找到。
C:\bea\tuxedo8.1\udataobj\jolt
2、JoltSessionAttributes.APPADDRESS,这个是你调用的tuxedo地址与端口,必须//开始,用冒号分隔端口。
//32.121.80.202:45000
3、这个端口是在你要调用的tuxedo机器的etc目录下的ubbconfig中,wtc的端口和jolt的端口都在里面,配置的语句分别大概是这样子
WSL SRVGRP=GROUP1 SRVID=112 CLOPT="-A -- -n //32.121.80.202:46000 -m 10 -M 10 -x 10 -c 1024"
JSL SRVGRP=GROUP1 SRVID=112 CLOPT="-A -- -n //32.121.80.202:45000 -m 10 -M 10 -x 10 -c 1024"
4、new JoltSession(sattr, userName, userRole, userPassword,appPassword);这里里面的用户名等等我全部都是空,什么时候可以留空我也没研究,知道的兄弟也请告诉一下
5、new JoltRemoteService("QAM_CBS1_L1SVC", session);QAM_CBS1_L1SVC是tuxedo的serivce,你搭建tuxedo的时候配置的,同时,你还得在tuxedo的jrepository里配置它才行;
6、String b = new String(jm.toString().getBytes("iso-8859-1"), "gbk");返回的我认为应该是iso8859_1的编码,英文是没有问题的,中文就乱码,我转了gbk以后还是有部分的乱码,还没解决这个问题;知道的兄弟也请告诉一下
7、inBuf.getOutputs()返回的格式,我看了似乎只能自己用“:”,“[”等slipt取出;没有分隔好的输入;
一些报错的解决 中间还是遇到了很多的报错,有些问题还是头痛的一阵子。
1、Exception in thread "main" bea.jolt.SessionException: APPADDRESS format is //host:port,..
解决方法:按照//32.121.80.202:45000这个格式即可。
2、bea.jolt.SessionException: Cannot connect to any //12.121.80.202:46000.
Reason:NwHdlr: Network Error: chkauth: J_CHECKAUTH FAILED
解决方法:反编译jolt.jar的代码就会知道J_CHECKAUTH FAILED这个错在这里不是用户名密码错误,而是一个ioexception,最有可能的是ip或端口错了。我错误用了wtc的端口46000,改为45000jolt的端口即可。
3、Exception in thread "main" bea.jolt.ServiceException: Service is not available:TAM_CBS1_L1SVC
JoltRemoteService.init()
解决过程:打开tuxedo的日志:/ngbss/tuxapp/log/stderr,显示的下面这个报错:
tpcall .GETSVC failed: TPESVCFAIL - application level service failure
再看是JoltRemoteService.init()里报出的,反编译代码知道是初始化这个remoteservice时的问题,所以不是TAM_CBS1_L1SVC这服务本身有问题。那很可能就是jolt没识别到这个服务。
解决方法:打开jrepostory文件,头两行是
#!JOLT1.0
add SVC/TPL_CRM1_L1SVC:bt=FML32:ex=1:BT=FML32:vs=6:\
要把TPL_CRM1_L1SVC改为TAM_CBS1_L1SVC才行。
注意,还有一个原因会导致这个错误,就是我在解决乱码问题时,尝试加入System.setProperty("bea.jolt.encoding", "iso8859_1");这代码
4、Exception in thread "main" java.lang.IllegalArgumentException: PAYMENT_ID
原因1:jrepository没有配置payment_id
原因2:payment_id配置的类型不对
5、JoltMessage jm = inBuf.getOutputs();
JoltRemoteService里,有input和output,output只提供了get方法,input只提供了set方法,所以你set了input后,又想直接get出来似乎是不行的。
6、修改jrepository后,必须重启tux才能生效。
7、Exception in thread "main" bea.jolt.SessionException: Cannot connect to any //132.121.80.202:45000.
Reason:NwHdlr: Cannot open socket
解决方法:tuxedo shutdown后会出现,重启tuxedo即可
还有一个原因,用tuxedo里的RE.html我试图配置,也出现了这个错误(未明原因)
最后
补充一下,tuxedo的安装目录里有详细的例子sample,比如Atm.java(明显就是照顾银行系统),不过可惜里面没有提及对中文的支持。
java jolt tuxedo_使用java通过jolt调用tuxedo相关推荐
- java jolt调用tuxedo_Jolt调用Tuxedo服务,该怎么处理
Jolt调用Tuxedo服务 JoltSession session; JoltSessionAttributes sattr; JoltRemoteService toupper; JoltTran ...
- java jolt tuxedo_java通过jolt调用tuxedo服务.xls
java通过jolt调用tuxedo服务.xls 还剩 20页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: ?private bea.jolt.poo ...
- java jolt tuxedo_Java通过Jolt调用Tuxedo服务
Java通过Jolt调用Tuxedo服务 一.简介 ------------------------ 外部应用访问Tuxedo服务是很经常的事,一般有两种方法WTC和Jolt,网上很多关于Jolt调用 ...
- Java通过Jolt调用Tuxedo服务
Java通过Jolt调用Tuxedo服务 草木瓜 2006-6-1 ------------------------ 一.简介 ------------------------ 外部应用访问Tuxed ...
- 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 ...
- 对使用Jolt调用Tuxedo的一个简单的封装
为什么80%的码农都做不了架构师?>>> 注:大约4年前,在上家公司封装的一个Jolt调用Texedo的包,并写的一个使用文档.不知道现在还有没有人使用Jolt这个东西了. 源 ...
- Java调用Tuxedo方案浅析
Tuxedo为业界公认的性能.稳定性.健壮性都非常好的中间件之一,之所以能做到这么好的稳定性和健壮性,其采用私有的通讯协议是原因之一.因为采用私有的通讯协议,所以客户端与服务端的通讯质量可以全部由Tu ...
- Linux下Tuxedo配置以及Java调用Tuxedo
前言 因为业务需求,需要对接某部门的Tuxedo数据接口,但是那边提供的技术支持很少,Tuxedo相关资料网上不是很完善,以下是个人对Java调用Tuxedo相关整合,为方便个人和大家学习,不完善之处 ...
- 关于 调用 JNI JAR java 的说明和注意事项,调用第 靠写不下了
关于 调用 JNI JAR java 的说明和注意事项,调用第 靠写不下了
最新文章
- Linux 常用小技巧
- beyond compare 4 的30天试用期已过-解决方法
- ipsec ip替换_点到多点ipsec-vpn NAT穿透和固定IP共存
- 不可摸数http://acm.hdu.edu.cn/showproblem.php?pid=1999
- ArcGIS工具之ET GeoWizards、GeoTools、GeoTools
- linux 监控命令iostat,Linux性能监控分析命令(三)—iostat命令介绍
- 基于块的纹理合成 matlab程序,基于块的纹理合成方法和装置制造方法
- Ubuntu 修改apt 源
- 安装金蝶K3 提示:“安装包配置文件(setup.lst)文件不存在”
- 水彩绘画艺术效果PS动作
- 教学向|比较难的人体构造建模,用zbrush构建脸部与肌肉形状
- ibm tivoli_调优IBM DB2以获得最佳的IBM Tivoli Security Operations Manager性能
- python tkinter控件treeview的数据列表显示的实现_code
- 爆火书单视频怎么制作?实用制作教程来了
- 中文语音评测之thchs30+gop_speechocean762实现
- controller注解使用 resultful
- 我的世界Java版最大村庄_我的世界:java版完美种子,开局两村庄齐铁套
- 【GStreamer】gstreamer sink中对比度contrast、亮度brightness、饱和度saturation、hue 概念理解
- LNMP架构的搭建——源码编译(PHP,nginx,Mysql)
- html控制图的宽,控制图