先来段废话

很多东西都是成功前,觉得非常难;成功了之后,又觉得没什么,不值得记录下来。其实不是的,你成功了,后面还是有很多的未成功的新人的,所以必须要分享出来。

特别是一些用的人不多的技术。像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相关推荐

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

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

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

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

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

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

  4. Java通过Jolt调用Tuxedo服务

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

  5. 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 ...

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

    为什么80%的码农都做不了架构师?>>>    注:大约4年前,在上家公司封装的一个Jolt调用Texedo的包,并写的一个使用文档.不知道现在还有没有人使用Jolt这个东西了. 源 ...

  7. Java调用Tuxedo方案浅析

    Tuxedo为业界公认的性能.稳定性.健壮性都非常好的中间件之一,之所以能做到这么好的稳定性和健壮性,其采用私有的通讯协议是原因之一.因为采用私有的通讯协议,所以客户端与服务端的通讯质量可以全部由Tu ...

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

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

  9. 关于 调用 JNI JAR java 的说明和注意事项,调用第 靠写不下了

    关于 调用 JNI JAR java 的说明和注意事项,调用第 靠写不下了

最新文章

  1. Linux 常用小技巧
  2. beyond compare 4 的30天试用期已过-解决方法
  3. ipsec ip替换_点到多点ipsec-vpn NAT穿透和固定IP共存
  4. 不可摸数http://acm.hdu.edu.cn/showproblem.php?pid=1999
  5. ArcGIS工具之ET GeoWizards、GeoTools、GeoTools
  6. linux 监控命令iostat,Linux性能监控分析命令(三)—iostat命令介绍
  7. 基于块的纹理合成 matlab程序,基于块的纹理合成方法和装置制造方法
  8. Ubuntu 修改apt 源
  9. 安装金蝶K3 提示:“安装包配置文件(setup.lst)文件不存在”
  10. 水彩绘画艺术效果PS动作
  11. 教学向|比较难的人体构造建模,用zbrush构建脸部与肌肉形状
  12. ibm tivoli_调优IBM DB2以获得最佳的IBM Tivoli Security Operations Manager性能
  13. python tkinter控件treeview的数据列表显示的实现_code
  14. 爆火书单视频怎么制作?实用制作教程来了
  15. 中文语音评测之thchs30+gop_speechocean762实现
  16. controller注解使用 resultful
  17. 我的世界Java版最大村庄_我的世界:java版完美种子,开局两村庄齐铁套
  18. 【GStreamer】gstreamer sink中对比度contrast、亮度brightness、饱和度saturation、hue 概念理解
  19. LNMP架构的搭建——源码编译(PHP,nginx,Mysql)
  20. html控制图的宽,控制图

热门文章

  1. 网页特效精灵 v4.0.0 官方最新版
  2. .Net Core下自定义JsonResult
  3. Centos7部署NFS-V4
  4. 腾讯是如何大幅降低带宽和网络流量的
  5. 【线段树】【SOJ1136】【cogs775】山海经
  6. 华为“造车”,为时未晚
  7. 万字长文分析AQS原理以及应用
  8. 什么是持久层(POJO)?
  9. 前端发展历程与技术应用概述
  10. Mac OSX下破解软件的一般方法及过程