在电信领域的开发中,现在流行的架构是前台使用java,负责组织业务流程、展现结果,后台使用C/C++来封装各种服务,供前台调用。这就会出现前台Java如何连接Tuxedo服务器,调用服务的问题。通常,有两种解决方案,WTC和Jolt。WTC是weblogic连接tuxedo的专有方案,Jolt是tuxedo本身携带的组件。因为weblogic和tuxedo都是oracle的产品,因此,可以推测,WTC的集成度和效率会高一些,功能强大一些,但须于weblogic绑定,没有Jolt自由度高,因此个人推荐使用Jolt来连接tuxedo.

下面将介绍使用Jolt连接Tuxedo过程中,tuxedo侧的主要配置,以及令人头痛的乱码问题的解决:

1.1、ubbconfig文件配置

为使Jolt客户端正常连接到Tuxedo服务器,需要在ubbconfig中开启JSL和JREPSVR两个进程,JSL用于监听并分发客户端的请求,JREPSVR进程用于配置Tuxedo导出给Jolt客户端的服务,具体配置如下:

修改*RESOURCES区的MAXACCESSERS参数的值为足够大,如900。

在*GROUPS区添加JSLGRP和JREPGRP两个group,如下:

JSLGRP LMID=SITE1 GRPNO=3

JREPGRP LMID=SITE1 GRPNO=4

其中

,LMID字段要与*MACHINES区中Tuxedo所在主机的LMID相同。

在*SERVERS区添加JSL和JREPSVR两个server,如下:

JSL SRVGRP=JSLGRP SRVID=755

CLOPT="-A -- -n //1.2.3.4:5002 -m 5 -M 10 -x 5"

JREPSVR SRVGRP=JREPGRP SRVID=760 RESTART=Y GRACE=0

CLOPT="-A -- -W -P

/bea/tuxedo8.1/udataobj/jolt/repository/jrepository"

其中

,SRVGRP字段要与*GROUPS区添加JSLGRP和JREPGRP两个group对应;JSL的CLOPT字段中的地址要填写Tuxedo对外提供服务的真实地址;JREPSVR的CLOPT字段中的-P属性是指定的Jolt的服务注册表文件,该路径必须跟真实的路径相符。其他各个参数的详细含义,可以参照下面的链接:

http://download-llnw.oracle.com/docs/cd/E13161_01/tuxedo/docs10gr3/jdg/dvconfig.html

先前ubbconfig中可能开启了WSL进程,该进程可以关闭,Jolt不使用该服务。

确认Tuxedo安装中是否包含Jolt的licsence

打开

TUXEDO_HOME\udataobj\jolt\lic.txt

文件,查看其中是否包含

[BEA JOLT]

段,如果不包含,则需要添加该licsence,否则,Jolt 服务器将无法启动。

全部配置完毕后,重启Tuxedo服务器,若在控制台看到如下输出,则说明JSL和JREPSVR服务启动成功:

exec JSL -A -- -n //1.2.3.4:5002 -m 5 -M 10 -x 5 :

process id=5298 ... Started.

exec JREPSVR -A -- -W -P

/bea/tuxedo8.1/udataobj/jolt/repository/jrepository :

process id=5304 ... Started.

问题列表:

JSL进程启动失败,出现如下异常:

exec JSL -A -- -n //1.2.3.3:5002 -m 5 -M 10 -x 5 :

CMDTUX_CAT:1685: ERROR: Application initialization

failure该异常可能是Tuxedo没装Jolt的licsence,或Jolt的licsence失效。

JSL进程启动失败,出现如下异常:

095007.s22024!JSH.16097.3086915264.-2: JOLT_CAT:1008: "ERROR: Could

not establish listening address on network

0x000213890a047822"

该异常可能是JSL使用的端口被占用,换一个可用的端口即可。

1.2、导出Tuxedo服务

为使Jolt客户端能够查找到需要的服务,必须将需要的Tuxedo服务导出到Jolt注册表中,即上面提到的jrepository

文件。服务的导出既可在Tuxedo服务器上进行,也可在其他客户端机器上进行。具体如下:

在机器上安装JDK,并配置path环境变量。

将jolt.jar和joltadmin.jar加载到classpath下,如下:

CLASSPATH=.:/bea/tuxedo8.1/udataobj/jolt/joltadmin.jar:/bea/tuxedo8.1/udataobj/jolt/jolt.jar

上面的两个jar包在

TUXEDO_HOME \udataobj\jolt

目录下可以找到。

导出服务

导出Tuxedo服务时,需要根据要导出的服务的详细定义编写导出脚本。比如:

service=SVC

export=true

inbuf=VIEW32

outbuf=STRING

inview=trans

param=routeid

type=string

access=in

param=inxml

type=string

access=in

param=outxml

type=string

access=out

其中

service

代表Tuxedo服务名,

export

表示是否导出,

inbuf

代表传出参数的类型,

outbuf

代表返回参数的类型,

param

代表传入传出参数的名字,

type

代表传入传出参数的类型,

access

表示参数的访问类型。编写好导出脚本,将其保存成文本文件,如SVC.rep,在命令行进入所在目录,执行下面的命令执行导出:

java bea.jolt.admin.jbld -p aaa //1.2.3.4:5002 SVC.rep

注意,ip及端口需要与ubbconfig文件中配置的JSL进程的CLOPT字段中的地址一致。

如果看到如下信息,则说明服务导出成功:

Line[1]: Service [SVC]: Inserted

Previous Package [PKG/aaa]: Deleted

Package [PKG/aaa]: Inserted

BULK LOAD SUMMARY

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

Bulk load file name: SVC.rep

Services Defined in file: 1

Services Inserted: 1

Services Not Replaced: 0

Services Errors: 0

Previous Bulk Services Deleted: 0

问题列表:

导出失败,出现如下异常:

C:\>java bea.jolt.admin.jbld -p abm //1.2.3.4:5002

SVC_BILL_REDUCE.rep

Exception in thread "main" bea.jolt.ServiceException: Service is

not available:.GETKEYS

at

bea.jolt.JoltRemoteService.init(JoltRemoteService.java:156)

at bea.jolt.JoltRemoteService.(JoltRemoteService.java:112)

at bea.jolt.admin.JSvcPkgTbl.initTable(jbld.java:1010)

at bea.jolt.admin.JSvcPkgTbl.(jbld.java:990)

at bea.jolt.admin.JBldDefRec.(jbld.java:138)

at bea.jolt.admin.jbld.main(jbld.java:801)

该异常可能是因为预先配置了“1.3、国际化”的配置,从而客户端与服务器的字符编码不一致,服务器无法识别客户端发送的导出命令造成的。解决办法是,将主机上的系统变量JOLTI18N=TRUE删除,重启Tuxedo,重新执行导出命令。

1.3、国际化

由于Jolt客户端与Tuxedo交互时,相互传递的参数可能包含中文,因此,要对传输的内容进行国际化。步骤如下:

Tuxedo服务器端

在主机上添加下面的环境变量,重启Tuxedo服务器,JSH会参照此变量。

JOLTI18N=TRUE

Jolt客户端

将jolti18n.jar添加到classpath下,并在系统参数中添加如下属性,其中,charsetName代表Jolt客户端与tuxedo交互时使用的字符编码集,该字符编码集必须在客户端和服务器上都支持,如GBK。

bea.jolt.encoding=charsetName

系统属性的添加方法有如下两种:

$java ... -Dbea.jolt.encoding=codesetname ...

或 System.setProperty("bea.jolt.encoding", joltEncoding);

注意,导出服务时,需关闭国际化,否则会报错。

另,以上过程中若出现异常,可以查看ULOG进行确认。

以上就是Tuxdeo端的全部配置,配置完毕后,就可以使用Jolt客户端连接并调用Tuxedo服务了。

java jolt_Java使用Jolt连接Tuxedo服务器相关推荐

  1. Java使用Jolt连接Tuxedo服务器

    2019独角兽企业重金招聘Python工程师标准>>> 在电信领域的开发中,现在流行的架构是前台使用java,负责组织业务流程.展现结果,后台使用C/C++来封装各种服务,供前台调用 ...

  2. java jolt tuxedo_Java使用Jolt连接Tuxedo服务器

    在电信领域的开发中,现在流行的架构是前台使用java,负责组织业务流程.展现结果,后台使用C/C++来封装各种服务,供前台调用.这就会出现前台Java如何连接Tuxedo服务器,调用服务的问题.通常, ...

  3. java jolt tuxedo_2019年用Java通过Jolt连接Tuxedo.doc

    用Java 通过Jolt 连接 Tuxedo 需求: 在客户端(Windows系统)用java通过jolt连接服务端服务(unix系统),把数据(用户ID.用户名称)发送到服务端.矚慫润厲钐瘗睞枥庑赖 ...

  4. java spring ldap_Spring Boot连接LDAP服务器

    LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,是一个开放.厂商中立的行业标准应用协议 ...

  5. java jolt tuxedo_Java中使用Jolt访问Tuxedo服务 – Tomcat环境部署测试

    Java中使用Jolt访问Tuxedo服务 – Tomcat环境部署测试 Java中使用Jolt访问Tuxedo服务 – Tomcat环境部署测试 最近在学习基于Tuxedo的系统架构,网上讨论最多的 ...

  6. java jolt tuxedo_Java 通过Jolt与Tuxedo连接 (1)

    一.简介 ------------------------ 外部应用访问Tuxedo服务是很经常的事,一般有两种方法WTC和Jolt,网上很多关于Jolt调用Tuxedo服务 文章,描述的太多笼统,其 ...

  7. Java通过Jolt调用Tuxedo服务

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

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

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

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

最新文章

  1. b区计算机考研招不满的大学,b区考研招不满的大学,适合调剂的学校有哪些
  2. haproxy访问控制与动静分离
  3. 安装源码包(这里主要写了redis,其他都一样的操作)
  4. css列表格式属性,css list-style-type属性笔记
  5. java 处理表单_java – 处理multipart / form-data输入
  6. java定义一个getsize方法,long getSize()
  7. PadLeft 和 PadRight
  8. c++ 删除二叉树的子树_平衡二叉树
  9. pandas.DataFrame.append
  10. VB 读写TXT文本文件函数
  11. 计算机科学与技术专业的英文作文,计算机专业英语:科技交流与科技论文写作...
  12. (zhuan) 一些RL的文献(及笔记)
  13. 再谈js拖拽(二)仿iGoogle自定义首页模块拖拽
  14. android代码获取deviceid,获取安卓系统的设备id用getDeviceId()函数
  15. 如何在Nintendo Switch上进行游戏共享
  16. linux学习步骤(从入门到精通)
  17. (Python)异常处理try...except、raise
  18. 经典的网站反爬手段(超实用)
  19. 【linux驱动之字符设备驱动基础】
  20. abstract(抽象)的定义和使用

热门文章

  1. python测试用例不通过发送报告_selenium+python自动化89-用例不通过的时候发送邮件...
  2. 迈克菲Mcafee杀毒软件占了我C盘126个G....
  3. MES系统如何实现质量管理?
  4. 使用机器学习预测股票涨跌(附工具类,一键调用)
  5. 信息时代,未来是要考脑子赚钱
  6. List集合中文名排序
  7. 科摩多数据备份工具下载
  8. 计算机原理1046Q是什么意思,半桥驱动电路工作原理,半桥驱动电路的作用是什么 - 功率器件 - 电子发烧友网...
  9. 基于Rete算法的JAVA规则引擎
  10. 招聘 | 中科院遗传发育所李红菊研究组招聘助研/副研及博士后(特别研究助理)...