赞
踩
因为业务需求,需要对接某部门的Tuxedo数据接口,但是那边提供的技术支持很少,Tuxedo相关资料网上不是很完善,以下是个人对Java调用Tuxedo相关整合,为方便个人和大家学习,不完善之处大家多多包涵,错误之处请指出!
在合适的位置上传Tuxedo,将传入的Tuxedo版本进行安装,步骤如下:
安装成功过后,Oracle自带有很多例子,大家可以根据自己的需求自己选择,例子在samples目录下。这里选择简单的sampapp进行简单的连通性测试。
环境配置:
# Tuxedo
TUXDIR=/usr/local/tuxedo/tuxedo12.1.1.0; export TUXDIR
JVMLIBS=$JAVA_HOME/lib/amd64/server:$JAVA_HOME/jre/bin
PATH=$TUXDIR/bin:$JAVA_HOME/bin:$PATH; export PATH
COBCPY=:$TUXDIR/cobinclude; export COBCPY
COBOPT="-C ANS85 -C ALIGN=8 -C NOIBMCOMP -C TRUNC=ANSI -C OSEXT=cbl"; export COBOPT
SHLIB_PATH=$TUXDIR/lib:$JVMLIBS:$SHLIB_PATH; export SHLIB_PATH
LIBPATH=$TUXDIR/lib:$JVMLIBS:$LIBPATH; export LIBPATH
LD_LIBRARY_PATH=$TUXDIR/lib:$JVMLIBS:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
WEBJAVADIR=$TUXDIR/udataobj/webgui/java; export WEBJAVADIR
TUXCONFIG=/usr/local/tuxedo/tuxedo12.1.1.0/samples/atmi/myapp/tuxconfig; export TUXCONFIG #tuxconfig配置
CLASSPATH=:$TUXDIR/udataobj/jolt/joltadmin.jar::$TUXDIR/udataobj/jolt/jolt.jar; export CLASSPATH #jolt配置
#以上包含jolt服务端配置和例子运行所需tuxconfig配置
复制一份oracle自带例子simpapp并命名为myapp,切换目录到myapp,打开文件ubbsimple进行ubb配置(可自行根据例子里面ubbsimple<>括号中提示进行配置)。注意,自行配置的,需要将括号中的提示内容全部替换!!
# (c) 2003 BEA Systems, Inc. All Rights Reserved. #ident "@(#) samples/atmi/simpapp/ubbsimple $Revision: 1.7 $" #Skeleton UBBCONFIG file for the TUXEDO Simple Application. #Replace the <bracketed> items with the appropriate values. *RESOURCES IPCKEY 123457 #任意填写 #Example: #IPCKEY 123456 DOMAINID simpapp MASTER simple MAXACCESSERS 900 MAXSERVERS 10 MAXSERVICES 20 MODEL SHM LDBAL N *MACHINES DEFAULT: APPDIR="/usr/local/tuxedo/tuxedo12.1.1.0/samples/atmi/myapp" TUXCONFIG="/usr/local/tuxedo/tuxedo12.1.1.0/samples/atmi/myapp/tuxconfig" #与.bash_profile相同 TUXDIR="/usr/local/tuxedo/tuxedo12.1.1.0" MAXWSCLIENTS=5 #Example: # APPDIR="/home/me/simpapp" # TUXCONFIG="/home/me/simpapp/tuxconfig" # TUXDIR="/usr/tuxedo" "localhost.localdomain" LMID=simple #这里主机名为hostname命令显示的 #Example: #beatux LMID=simple *GROUPS GROUP1 LMID=simple GRPNO=1 OPENINFO=NONE JSLGRP LMID=simple GRPNO=2 #LMID与上面相同,下同 JREPGRP LMID=simple GRPNO=3 *SERVERS DEFAULT: CLOPT="-A" simpserv SRVGRP=GROUP1 SRVID=1 JSL SRVGRP=JSLGRP SRVID=755 CLOPT="-A -- -n //192.168.78.11:30000 -m 5 -M 10 -x 5" JREPSVR SRVGRP=JREPGRP SRVID=302 CLOPT="-A -- -W -P /usr/local/tuxedo/tuxedo12.1.1.0/udataobj/jolt/repository/jrepository" *SERVICES TOUPPER #以上包含当前例子jolt服务端配置
ubbsimple配置完成过后,进行当前TUXCONFIG环境配置(前面环境已经配置,大家可根据情况自行修改或自己添加)。注意,修改后一定要重新source使环境生效!!!!
在myapp目录下:
服务启动后,可进入tmadmin的监管环境: tmadmin
连通性的测试可通过直接调用客户端进行:simpcl hi
前面我们完整的搭建了一个Tuxedo服务端,这里只介绍jolt的方式调用我们的服务,废话不多说,下面我们开始Tuxedo相关jolt服务的配置和导出以及java端的调用。
java通过jolt连接到Tuxedo需要在ubbsimple中开启两个进程:JSL和JREPSVR。
JSL:监听并分发客户端的请求
JREPSVR:配置Tuxedo导出给jolt客户端的服务
ubbsimple具体配置如下(上面ubb已经配置过了的请略过):
JSLGRP LMID=simple GRPNO=2 #这里LMID要与上面LMID相同
JREPGRP LMID=simple GRPNO=3
JSL SRVGRP=JSLGRP SRVID=755
CLOPT="-A -- -n //192.168.78.11:30000 -m 5 -M 10 -x 5" #这里地址就是jolt调用地址
JREPSVR SRVGRP=JREPGRP SRVID=302
CLOPT="-A -- -W -P /usr/local/tuxedo/tuxedo12.1.1.0/udataobj/jolt/repository/jrepository" #安装目录下/udataobj/jolt/repository/jrepository
配置好ubbsimple过后,为使Jolt客户端能够查找到需要的服务,必须将需要的Tuxedo服务导出到Jolt注册表中,即上面提到的jrepository文件。服务的导出既可在Tuxedo服务器上进行,也可在其他客户端机器上进行。
相关配置如下:
CLASSPATH=:$TUXDIR/udataobj/jolt/joltadmin.jar::$TUXDIR/udataobj/jolt/jolt.jar; export CLASSPATH
#这两个包在/udataobj/jolt下可以找到
上面配置完成后,再新建一个接口配置文件simpapp.rep,并添加如下内容:
service=TOUPPER #Tuxedo服务名称
inbuf=FML
outbuf=FML
export=true #是否导出
param=LU
type=string
access=inout
param=TUXEDOTEST #传入传出参数的名字
type=string #参数类型
access=inout #参数的访问类型
#具体的参数说明请自行百度
内容添加完成过后,我们的配置工作,差不多就完成了,执行一下命令导出:
java bea.jolt.admin.jbld //192.168.78.11:30000 simpapp.rep #这里的地址和IP要和ubbsimple文件中配置的JSL进程的CLOPT字段中的地址一致。
导出成功示例:
Line[1]: Service [TOUPPER]: Inserted Previous Package [PKG/aaa]: Deleted Package [PKG/aaa]: Inserted BULK LOAD SUMMARY ----------------- Bulk load file name: simpapp.rep Services Defined in file: 1 Services Inserted: 1 Services Not Replaced: 0 Services Errors: 0 Previous Bulk Services Deleted: 0 #这是首次导出的示例,再次导出有一点点区别
完成上面所有的配置,jolt服务端大功告成,我们可一通过java开始调用了~
首先需要三个jar包:joltjse.jar,jolt.jar,joltwls.jar,这三个包在安装目录下 udataobj/jolt可以找到,没有安装的请自行查找相关资源。
这边项目jar包是通过maven管理的,所以需要先将包导入项目,再交给maven管理。
具体步骤如下:
#添加第三方依赖以便打包 <dependency> <groupId>com.jolt</groupId> <artifactId>jolt</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/src/main/resources/lib/jolt.jar</systemPath> </dependency> <dependency> <groupId>com.jolt</groupId> <artifactId>joltjse</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/src/main/resources/lib/joltjse.jar</systemPath> </dependency> <dependency> <groupId>com.jolt</groupId> <artifactId>joltwls</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/src/main/resources/lib/joltwls.jar</systemPath> </dependency> #并修改spring boot的作用域 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> </plugins> </build>
上面配置完成过后,就只有java通过jolt调用Tuxedo最后一步了,逻辑代码的书写,直接上代码:
JoltSession session; JoltSessionAttributes attr; JoltRemoteService service; JoltMessage message = null; String userName = null; String userPassword = null; String appPassword = null; String userRole = null; attr = new JoltSessionAttributes(); attr.setString(JoltSessionAttributes.APPADDRESS, "//192.168.78.11:30000"); #调用地址 attr.setInt(JoltSessionAttributes.IDLETIMEOUT, 300); session = new JoltSession(attr, userName, userRole, userPassword, appPassword); service = new JoltRemoteService("TOUPPER", session); service.setString("Test", "a boy"); try { service.call(null); message = service.getOutputs(); service.clear(); session.endSession(); } catch (Exception e) { } return message; #根据自己的情况修改
以上就是全部的流程,因为个人没有对Tuxedo这个中间件进行深入研究,所以文章中有纰漏和错误在所难免,只希望文章对大家有些许帮助!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。