[推荐]Java使用Jolt连接Tuxedo服务器_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 8127 | 回复: 0   主题: [推荐]Java使用Jolt连接Tuxedo服务器        下一篇 
yi.liao
注册用户
等级:少校
经验:917
发帖:52
精华:4
注册:2013-1-31
状态:离线
发送短消息息给yi.liao 加好友    发送短消息息给yi.liao 发消息
发表于: IP:您无权察看 2013-2-16 15:04:42 | [全部帖] [楼主帖] 楼主

在电信领域

开发中,现在流行

架构是前台使用java,负责组织业务流程、展现结果,后台使用C/C++来封装各种服务,供前台调用。这就会出现前台Java如何连接Tuxedo服务器,调用服务

问题。通常,有两种解决方案,WTC

Jolt。WTC是weblogic连接tuxedo

专有方案,Jolt是tuxedo本身携带

组件。因为weblogic

tuxedo都是oracle

产品,因此,可以推测,WTC

集成度

效率会高一些,功能强大一些,但须于weblogic绑定,没有Jolt自由度高,因此个人推荐使用Jolt来连接tuxedo.

下面将介绍使用Jolt连接Tuxedo过程中,tuxedo侧

主要配置,以及令人头痛

乱码问题

解决:

1.1ubbconfig

文件配置

为使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:5002SVC.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服务了




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论