BEA公司的TUXEDO,WEBLOGIC作爲優秀的中間件產品,在銀行、電信、金融等行業廣泛使用,通常採用TUXEDO實現系統的核心業務,用WEBLOGIC做爲系統擴展到INTERNET的平臺,實現電子商務,由WEBLOGIC調用TUXEDO上的服務,所以TUXEDO與WEBLOGIC之間的互連經常遇到。
因爲在工作中經常用到,先就個人總結和網上收集的資料總結如下,惠人惠己。
目錄:
一. 調用方式
二. WTC配置步驟:
1. Tuxedo的配置
2.1.1. 設置環境變量:
2.1.2. 編寫Tuxedo服務(atmi)
2.1.3. 配置ubbconfig
二. WTC配置步驟:
1. Tuxedo的配置
2.1.1. 設置環境變量:
2.1.2. 編寫Tuxedo服務(atmi)
2.1.3. 配置ubbconfig
2.1.4. 編譯ubbconfig文件
2.1.5. 配置domconfig
2.1.6. 編譯domconfig
2. Weblogic配置(7.0以上的版本)
2.1.7. 配置config.xml
3. Weblogic做客戶端,訪問Tuxedo服務
4. Tuxedo做客戶端,訪問Weblogic服務
三. JOLT配置步驟:
1. Tuxedo的配置
3.1.1. 配置ubbconfig
3.1.2. 註冊tuxedo service
2. Weblogic的配置
3.1.3. 配置jolt pool
3.1.4. 配置startup class, shutdown class
3. 程序調用例子
四. CORBA的調用步驟:
1. 獲得IDL,並且根據IDL生成java class
2. 配置config.xml文件
3. 程序調用例子
-----------------------------------------------正文-------------------------------------------------------------------------
一. 調用方式
WEBLOGIC與TUXEDO的調用有三種方式
1. WTC(WEBLOGIC TUXEDO CONNECTOR)
2. JOLT
3. CORBA(Common Object Request Broker Architecture)
WTC不僅能讓WEBLOGIC調用TUXEDO中的SERVICE,而且能讓TUXEDO調用WEBLOGIC中的EJB,但是隻能用於WEBLOGIC與TUXEDO之間進行互連。
JOLT只能讓WEBLOGIC調用TUXEDO. 但JOLT可以使TUXEDO與WEBSPERE等其他應用服務器相連。
CORBA是通用對象請求代理體系結構(Common Object Request Broker Architecture) 的英文縮寫,這是標準化組織OMG提出的一種實現分佈式異構環境下面向對象軟件的可重用、可移植、可互操作的體系結構。只要符合CORBA規範的服務器之間都可以互聯。
二. WTC配置步驟:
1. Tuxedo的配置
2.1.1. 設置環境變量:
set TUXDIR=C:\bea\tuxedo8.0
set APPDIR=C:\bea\tuxedo8.0\samples\atmi\simpapp
set PATH=%TUXDIR%\bin;%APPDIR%;%PATH%
set TUXCONFIG=%APPDIR%\tuxconfig 編譯之後生成的2進制配置文件. tuxconfig
set BDMCONFIG=%APPDIR%\bdmconfig編譯之後生成的2進制配置文件. bdmconfig
2.1.2. 編寫Tuxedo服務(atmi)
*RESOURCES
IPCKEY 123456
DOMAINID simpapp
MASTER simple
MAXACCESSERS 50
MAXSERVERS 25
MAXSERVICES 50
MODEL SHM
LDBAL N
*MACHINES
"SZ-XJS-DUANW"
LMID=simple
APPDIR="C:/bea/tuxedo8.0/samples/atmi/simpapp"
TUXCONFIG="C:/bea/tuxedo8.0/samples/atmi/simpapp/tuxconfig"
TUXDIR="C:/bea/tuxedo8.0"
*GROUPS
GROUP1
LMID=simple GRPNO=1 OPENINFO=NONE
GROUP2
LMID=simple GRPNO=2 OPENINFO=NONE
*SERVERS
simpserv SRVGRP=GROUP1 SRVID=1
/* simpserv編譯生成的可執行文件名字*/
DMADM SRVGRP=GROUP2 SRVID=2
/*域間通信的進程:管理域的server,在運行時管理BDMCONFIG,對已登記的gateway group提供支持,在tuxedo系統中,只能有一個DMADM進程,且不能對它採用MSSQ,不能有REPLYQ.*/
GWADM SRVGRP=GROUP2 SRVID=3
/*管理域的域網關進程,在運行時可以對某一組域網關進行管理,主要從DMADM那裏取得域的配置信息,並對域網管進程及跨越域的全局事務的LOG文件進行管理.*/
GWTDOMAIN SRVGRP=GROUP2 SRVID=4
/*處理域之前的互操作,使本地域和調用遠程域可以互相調用彼此的service,其中GMADM和GWTDOMAIN必須在一個組中,一個tuxedo應用可以有多個GWADM,GWTDOMAIN對,一個組只能有一個GMADM,GWTDOMAIN對,但一個tuxedo應用只能有一個DMADM,DMADM可以在如何一個組中,一個本地域可以和多個遠程域實現互操作. */
*SERVICES
TOUPPER
/* TOUPPER是simpserv文件中的函數名字, 該函數就被髮布爲屬於server: simpserv中的一個tuxedo service*/
2.1.4. 編譯ubbconfig文件
Tmloadcf ?y ubbconfig
2.1.5. 配置domconfig
*DM_RESOURCES
VERSION=U22
*DM_LOCAL_DOMAINS
/*DM_LOCAL_DOMAINS定義本地tuxedo域的信息,分別定義該域所在的組,域類型,域的唯一標識,域間通信時日誌的全路徑,其中GWGRP, DOMAINID的值要與ubb文件中的定義匹配.*/
TDOM1 GWGRP=GROUP2
TYPE=TDOMAIN
DOMAINID="TDOM1"
BLOCKTIME=20
MAXDATALEN=56
MAXRDOM=89
DMTLOGDEV="C:/bea/tuxedo8.0/samples/atmi/simpapp/TLOG"
AUDITLOG="C:/bea/tuxedo8.0/samples/atmi/simpapp/AUDITLOG"
DMTLOGNAME="DMTLOG_TUXDOM"
*DM_REMOTE_DOMAINS
/*DM_REMOTE_DOMAINS定義遠程weblogic域的信息,分別定義域類型,域的唯一性標識,該id標識需要與在weblogic server中的配置名稱吻合,否則通信將會失敗*/
TDOM2 TYPE=TDOMAIN
DOMAINID="TDOM2"
*DM_TDOMAIN
/*DM_TDOMAIN定義在DM_LOCAL_DOMAIN中已經說明的本地域和在DM_REMOTE_DOMAINS中已經說明的遠程域的具體的通信ip地址以及通信端口,其中NWDEVICE指定tuxedo發佈的server通信進程文件所在的路徑*/
TDOM1 NWADDR="//10.16.73.31:9998"
TDOM2 NWADDR="//10.16.73.31:9999"
*DM_REMOTE_SERVICES
/*DM_REMOTE_SERVICES定義當前域需要調用遠程域的服務名稱*/
TOLOWER RDOM="TDOM2"
*DM_LOCAL_SERVICES
/* DM_LOCAL_SERVICES定義當前域對外發布的tuxedo service名稱,可以通過RNAME重新命名service;該service可以被其他域中的服務調用*/
TOUPPER RNAME=" TOUPPER "
2.1.6. 編譯domconfig
dmloadcf -y domconfig
2. Weblogic配置(7.0以上的版本)
2.1.7. 配置config.xml
WTCRemoteTuxDom中的AccessPointId與在tuxedo dm文件中*DM_REMOTE_DOMAINS節中指定的domainid相同;NWAddr與*DM_TDOMAIN節中相應的NWADDR相同
WTCImport中的ResourceName與在tuxedo ubb文件中SERVICES節點中指定的服務名相同;RemoteName與在tuxedo dm文件中* DM_LOCAL_SERVICES節中發佈的服務名相同(可以省略)
WTCImport中的ResourceName與在tuxedo dm文件中DM_REMOTE_SERVICES節點中指定的服務名相同
3. Weblogic做客戶端,訪問Tuxedo服務
1. Tuxedo的配置
3.1.1. 配置ubbconfig
在ubb文件*GROUPS節點中增加如下2個tuxedo group:
JSLGRP LMID=simple GRPNO=5 OPENINFO=NONE
JREPGRP LMID=simple GRPNO=6 OPENINFO=NONE
在ubb文件*SERVERS節點中增加如下2個tuxedo server:
JSL SRVGRP=JSLGRP SRVID=22210 CLOPT="-A -- -n //tuxedoserver_ip:port -m 5 -M 10 -x 5"
JREPSVR SRVGRP=JREPGRP SRVID=22220 CLOPT="-A -- -W -P $(TUXDIR)/udataobj/jolt/repository/jrepository"
在ubb文件*MACHINES節點中增加MAXWSCLIENTS=10
*RESOURCES
IPCKEY 123456
DOMAINID simpapp
MASTER simple
MAXACCESSERS 50
MAXSERVERS 25
MAXSERVICES 50
MODEL SHM
LDBAL N
*MACHINES
"SZ-XJS-DUANW"
LMID=simple
APPDIR="C:/bea/tuxedo8.0/samples/simpapp"
TUXCONFIG="C:/bea/tuxedo8.0/samples/simpapp/tuxconfig"
TUXDIR="C:/bea/tuxedo8.0"
MAXWSCLIENTS=10
*GROUPS
GROUP1
LMID=simple GRPNO=1 OPENINFO=NONE
GROUP2
LMID=simple GRPNO=2 OPENINFO=NONE
JSLGRP
LMID=simple GRPNO=5 OPENINFO=NONE
JREPGRP
LMID=simple GRPNO=6 OPENINFO=NONE
*SERVERS
simpserv SRVGRP=GROUP1 SRVID=1
DMADM SRVGRP=GROUP2 SRVID=2
GWADM SRVGRP=GROUP2 SRVID=3
GWTDOMAIN SRVGRP=GROUP2 SRVID=4
JSL SRVGRP=JSLGRP SRVID=10 CLOPT="-A -- -n //10.16.73.31:9000 -m 5 -M 10 -x 5"
JREPSVR SRVGRP=JREPGRP SRVID=20 CLOPT="-A -- -W -P C:/bea/tuxedo8.0/udataobj/jolt/repository/jrepository"
/**當通過jolt實現tuxedo,weblogic互連時,JSL,JREPSVR是在tuxedo中必鬚髮布啓動的2個server*/
*SERVICES
TOUPPER
3.1.2. 註冊tuxedo service
打開Tuxedo安裝目錄下的udataobj/jolt/子目錄下RE.html文件,其中包含java applet,可通過appletviewer RE.html命令啓動該文件,該applet可以接收用戶輸入,並在jrepository中註冊tuxedo service以及service的輸入輸出參數等等,只有註冊之後才能通過jolt訪問tuxedo service.
2. Weblogic的配置
3.1.3. 配置jolt pool
<JoltConnectionPool FailoverAddresses="//10.16.73.31:9000"
Name="MyJoltPool" PrimaryAddresses="//10.16.73.31:9000" Targets="myserver"/>
/*//10.16.73.31:9000是ubbconfig中JSL指定的地址。
*/
3.1.4. 配置startup class, shutdown class
<ShutdownClass
ClassName="bea.jolt.pool.servlet.weblogic.PoolManagerShutDown"
Name="MyJoltPoolShutdown" Targets="myserver"/>
<StartupClass
ClassName="bea.jolt.pool.servlet.weblogic.PoolManagerStartUp"
Name="MyJoltPoolStart" Targets="myserver"/>
3. 程序調用例子
1. 獲得IDL,並且根據IDL生成java class
2. 配置config.xml文件
<WLECConnectionPool FailoverAddresses="//10.1.10.51:3842"
MaximumPoolSize="10" Name="Sys97WLEPool"
PrimaryAddresses="//10.1.10.51:3842"
Targets="myserver"
WLEDomain="etelecom_server"/>
3. 程序調用例子
2.1.5. 配置domconfig
2.1.6. 編譯domconfig
2. Weblogic配置(7.0以上的版本)
2.1.7. 配置config.xml
3. Weblogic做客戶端,訪問Tuxedo服務
4. Tuxedo做客戶端,訪問Weblogic服務
三. JOLT配置步驟:
1. Tuxedo的配置
3.1.1. 配置ubbconfig
3.1.2. 註冊tuxedo service
2. Weblogic的配置
3.1.3. 配置jolt pool
3.1.4. 配置startup class, shutdown class
3. 程序調用例子
四. CORBA的調用步驟:
1. 獲得IDL,並且根據IDL生成java class
2. 配置config.xml文件
3. 程序調用例子
-----------------------------------------------正文-------------------------------------------------------------------------
一. 調用方式
WEBLOGIC與TUXEDO的調用有三種方式
1. WTC(WEBLOGIC TUXEDO CONNECTOR)
2. JOLT
3. CORBA(Common Object Request Broker Architecture)
WTC不僅能讓WEBLOGIC調用TUXEDO中的SERVICE,而且能讓TUXEDO調用WEBLOGIC中的EJB,但是隻能用於WEBLOGIC與TUXEDO之間進行互連。
JOLT只能讓WEBLOGIC調用TUXEDO. 但JOLT可以使TUXEDO與WEBSPERE等其他應用服務器相連。
CORBA是通用對象請求代理體系結構(Common Object Request Broker Architecture) 的英文縮寫,這是標準化組織OMG提出的一種實現分佈式異構環境下面向對象軟件的可重用、可移植、可互操作的體系結構。只要符合CORBA規範的服務器之間都可以互聯。
二. WTC配置步驟:
1. Tuxedo的配置
2.1.1. 設置環境變量:
set TUXDIR=C:\bea\tuxedo8.0
set APPDIR=C:\bea\tuxedo8.0\samples\atmi\simpapp
set PATH=%TUXDIR%\bin;%APPDIR%;%PATH%
set TUXCONFIG=%APPDIR%\tuxconfig 編譯之後生成的2進制配置文件. tuxconfig
set BDMCONFIG=%APPDIR%\bdmconfig編譯之後生成的2進制配置文件. bdmconfig
2.1.2. 編寫Tuxedo服務(atmi)
#include <stdio.h>
#include <ctype.h>
#include <atmi.h> /* TUXEDO Header File */
#include <userlog.h> /* TUXEDO Header File */
/* tpsvrinit is executed when a server is booted, before it begins
processing requests. It is not necessary to have this function.
Also available is tpsvrdone (not used in this example), which is
called at server shutdown time.
*/
#if defined(__STDC__) || defined(__cplusplus)
tpsvrinit(int argc, char *argv[])
#else
tpsvrinit(argc, argv)
int argc;
char **argv;
#endif
{
/* Some compilers warn if argc and argv aren't used. */
argc = argc;
argv = argv;
/* userlog writes to the central TUXEDO message log */
userlog("Welcome to the simple server");
return(0);
}
/* This function performs the actual service requested by the client.
Its argument is a structure containing among other things a pointer
to the data buffer, and the length of the data buffer.
*/
#ifdef __cplusplus
extern "C"
#endif
void
#if defined(__STDC__) || defined(__cplusplus)
TOUPPER(TPSVCINFO *rqst)
#else
TOUPPER(rqst)
TPSVCINFO *rqst;
#endif
{
int i;
for(i = 0; i < rqst->len-1; i++)
rqst->data[i] = toupper(rqst->data[i]);
/* Return the transformed buffer to the requestor. */
tpreturn(TPSUCCESS, 0, rqst->data, 0L, 0);
}
2.1.3. 配置ubbconfig*RESOURCES
IPCKEY 123456
DOMAINID simpapp
MASTER simple
MAXACCESSERS 50
MAXSERVERS 25
MAXSERVICES 50
MODEL SHM
LDBAL N
*MACHINES
"SZ-XJS-DUANW"
LMID=simple
APPDIR="C:/bea/tuxedo8.0/samples/atmi/simpapp"
TUXCONFIG="C:/bea/tuxedo8.0/samples/atmi/simpapp/tuxconfig"
TUXDIR="C:/bea/tuxedo8.0"
*GROUPS
GROUP1
LMID=simple GRPNO=1 OPENINFO=NONE
GROUP2
LMID=simple GRPNO=2 OPENINFO=NONE
*SERVERS
simpserv SRVGRP=GROUP1 SRVID=1
/* simpserv編譯生成的可執行文件名字*/
DMADM SRVGRP=GROUP2 SRVID=2
/*域間通信的進程:管理域的server,在運行時管理BDMCONFIG,對已登記的gateway group提供支持,在tuxedo系統中,只能有一個DMADM進程,且不能對它採用MSSQ,不能有REPLYQ.*/
GWADM SRVGRP=GROUP2 SRVID=3
/*管理域的域網關進程,在運行時可以對某一組域網關進行管理,主要從DMADM那裏取得域的配置信息,並對域網管進程及跨越域的全局事務的LOG文件進行管理.*/
GWTDOMAIN SRVGRP=GROUP2 SRVID=4
/*處理域之前的互操作,使本地域和調用遠程域可以互相調用彼此的service,其中GMADM和GWTDOMAIN必須在一個組中,一個tuxedo應用可以有多個GWADM,GWTDOMAIN對,一個組只能有一個GMADM,GWTDOMAIN對,但一個tuxedo應用只能有一個DMADM,DMADM可以在如何一個組中,一個本地域可以和多個遠程域實現互操作. */
*SERVICES
TOUPPER
/* TOUPPER是simpserv文件中的函數名字, 該函數就被髮布爲屬於server: simpserv中的一個tuxedo service*/
2.1.4. 編譯ubbconfig文件
Tmloadcf ?y ubbconfig
2.1.5. 配置domconfig
*DM_RESOURCES
VERSION=U22
*DM_LOCAL_DOMAINS
/*DM_LOCAL_DOMAINS定義本地tuxedo域的信息,分別定義該域所在的組,域類型,域的唯一標識,域間通信時日誌的全路徑,其中GWGRP, DOMAINID的值要與ubb文件中的定義匹配.*/
TDOM1 GWGRP=GROUP2
TYPE=TDOMAIN
DOMAINID="TDOM1"
BLOCKTIME=20
MAXDATALEN=56
MAXRDOM=89
DMTLOGDEV="C:/bea/tuxedo8.0/samples/atmi/simpapp/TLOG"
AUDITLOG="C:/bea/tuxedo8.0/samples/atmi/simpapp/AUDITLOG"
DMTLOGNAME="DMTLOG_TUXDOM"
*DM_REMOTE_DOMAINS
/*DM_REMOTE_DOMAINS定義遠程weblogic域的信息,分別定義域類型,域的唯一性標識,該id標識需要與在weblogic server中的配置名稱吻合,否則通信將會失敗*/
TDOM2 TYPE=TDOMAIN
DOMAINID="TDOM2"
*DM_TDOMAIN
/*DM_TDOMAIN定義在DM_LOCAL_DOMAIN中已經說明的本地域和在DM_REMOTE_DOMAINS中已經說明的遠程域的具體的通信ip地址以及通信端口,其中NWDEVICE指定tuxedo發佈的server通信進程文件所在的路徑*/
TDOM1 NWADDR="//10.16.73.31:9998"
TDOM2 NWADDR="//10.16.73.31:9999"
*DM_REMOTE_SERVICES
/*DM_REMOTE_SERVICES定義當前域需要調用遠程域的服務名稱*/
TOLOWER RDOM="TDOM2"
*DM_LOCAL_SERVICES
/* DM_LOCAL_SERVICES定義當前域對外發布的tuxedo service名稱,可以通過RNAME重新命名service;該service可以被其他域中的服務調用*/
TOUPPER RNAME=" TOUPPER "
2.1.6. 編譯domconfig
dmloadcf -y domconfig
2. Weblogic配置(7.0以上的版本)
2.1.7. 配置config.xml
<WTCServer Name="MyWTCServer" Targets="myserver"> <WTCExport EJBName="wtcservice" LocalAccessPoint="TDOM2" Name="WTCExport-1111629542315" ResourceName="TOLOWER"/> <WTCImport LocalAccessPoint="TDOM2" Name="WTCImport-1111634013933" RemoteAccessPointList="TDOM1" ResourceName="TOUPPER"/> <WTCLocalTuxDom AccessPoint="TDOM2" AccessPointId="TDOM2" NWAddr="//10.16.73.31:9999" Name="WTCLocalTuxDom-1111629491418"/> <WTCRemoteTuxDom AccessPoint="TDOM1" AccessPointId="TDOM1" LocalAccessPoint="TDOM2" NWAddr="//10.16.73.31:9998" Name="WTCRemoteTuxDom-1111629517202"/> </WTCServer>WTCLocalTuxDom中的AccessPointId與在tuxedo dm文件中*DM_REMOTE_DOMAINS節中指定的domainid相同;NWAddr與*DM_TDOMAIN節中相應的NWADDR相同
WTCRemoteTuxDom中的AccessPointId與在tuxedo dm文件中*DM_REMOTE_DOMAINS節中指定的domainid相同;NWAddr與*DM_TDOMAIN節中相應的NWADDR相同
WTCImport中的ResourceName與在tuxedo ubb文件中SERVICES節點中指定的服務名相同;RemoteName與在tuxedo dm文件中* DM_LOCAL_SERVICES節中發佈的服務名相同(可以省略)
WTCImport中的ResourceName與在tuxedo dm文件中DM_REMOTE_SERVICES節點中指定的服務名相同
3. Weblogic做客戶端,訪問Tuxedo服務
import="weblogic.wtc.jatmi.;
import="weblogic.wtc.gwt.*;
import="javax.naming.*;
import="java.sql.;
try
{
//調用接口服務
Context ctx = new InitialContext();
TuxedoConnectionFactory cdmaTuxedoFactory = (TuxedoConnectionFactory) ctx.lookup("tuxedo.services.TuxedoConnection");
TuxedoConnection cdmaTuxedo = cdmaTuxedoFactory.getTuxedoConnection();
TypedString cdmaData = new TypedString(inStr);
Reply cdmaRtn = cdmaTuxedo.tpcall("TOUPPER", cdmaData, 0);
cdmaData = (TypedString) cdmaRtn.getReplyBuffer();
outStr = cdmaData.toString();
cdmaTuxedo.tpterm();
}
catch(Exception e)
{
outStr = e.getMessage();
}
4. Tuxedo做客戶端,訪問Weblogic服務#include <stdio.h>
#include "atmi.h" /* TUXEDO Header File */
#if defined(__STDC__) || defined(__cplusplus)
main(int argc, char *argv[])
#else
main(argc, argv)
int argc;
char *argv[];
#endif
{
char *sendbuf, *rcvbuf;
long sendlen, rcvlen;
int ret;
if(argc != 2) {
(void) fprintf(stderr, "Usage: simpcl string\n");
exit(1);
}
/* Attach to System/T as a Client Process */
if (tpinit((TPINIT *) NULL) == -1) {
(void) fprintf(stderr, "Tpinit failed\n");
exit(1);
}
sendlen = strlen(argv[1]);
/* Allocate STRING buffers for the request and the reply */
if((sendbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {
(void) fprintf(stderr,"Error allocating send buffer\n");
tpterm();
exit(1);
}
if((rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {
(void) fprintf(stderr,"Error allocating receive buffer\n");
tpfree(sendbuf);
tpterm();
exit(1);
}
(void) strcpy(sendbuf, argv[1]);
/* Request the service TOUPPER TOLOWER, waiting for a reply */
ret = tpcall("TOLOWER", (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, (long)0);
if(ret == -1) {
(void) fprintf(stderr, "Can't send request to service TOLOWER\n");
(void) fprintf(stderr, "Tperrno = %d\n", tperrno);
tpfree(sendbuf);
tpfree(rcvbuf);
tpterm();
exit(1);
}
(void) fprintf(stdout, "Returned string is: %s\n", rcvbuf);
/* Free Buffers & Detach from System/T */
tpfree(sendbuf);
tpfree(rcvbuf);
tpterm();
return(0);
}
三. JOLT配置步驟:1. Tuxedo的配置
3.1.1. 配置ubbconfig
在ubb文件*GROUPS節點中增加如下2個tuxedo group:
JSLGRP LMID=simple GRPNO=5 OPENINFO=NONE
JREPGRP LMID=simple GRPNO=6 OPENINFO=NONE
在ubb文件*SERVERS節點中增加如下2個tuxedo server:
JSL SRVGRP=JSLGRP SRVID=22210 CLOPT="-A -- -n //tuxedoserver_ip:port -m 5 -M 10 -x 5"
JREPSVR SRVGRP=JREPGRP SRVID=22220 CLOPT="-A -- -W -P $(TUXDIR)/udataobj/jolt/repository/jrepository"
在ubb文件*MACHINES節點中增加MAXWSCLIENTS=10
*RESOURCES
IPCKEY 123456
DOMAINID simpapp
MASTER simple
MAXACCESSERS 50
MAXSERVERS 25
MAXSERVICES 50
MODEL SHM
LDBAL N
*MACHINES
"SZ-XJS-DUANW"
LMID=simple
APPDIR="C:/bea/tuxedo8.0/samples/simpapp"
TUXCONFIG="C:/bea/tuxedo8.0/samples/simpapp/tuxconfig"
TUXDIR="C:/bea/tuxedo8.0"
MAXWSCLIENTS=10
*GROUPS
GROUP1
LMID=simple GRPNO=1 OPENINFO=NONE
GROUP2
LMID=simple GRPNO=2 OPENINFO=NONE
JSLGRP
LMID=simple GRPNO=5 OPENINFO=NONE
JREPGRP
LMID=simple GRPNO=6 OPENINFO=NONE
*SERVERS
simpserv SRVGRP=GROUP1 SRVID=1
DMADM SRVGRP=GROUP2 SRVID=2
GWADM SRVGRP=GROUP2 SRVID=3
GWTDOMAIN SRVGRP=GROUP2 SRVID=4
JSL SRVGRP=JSLGRP SRVID=10 CLOPT="-A -- -n //10.16.73.31:9000 -m 5 -M 10 -x 5"
JREPSVR SRVGRP=JREPGRP SRVID=20 CLOPT="-A -- -W -P C:/bea/tuxedo8.0/udataobj/jolt/repository/jrepository"
/**當通過jolt實現tuxedo,weblogic互連時,JSL,JREPSVR是在tuxedo中必鬚髮布啓動的2個server*/
*SERVICES
TOUPPER
3.1.2. 註冊tuxedo service
打開Tuxedo安裝目錄下的udataobj/jolt/子目錄下RE.html文件,其中包含java applet,可通過appletviewer RE.html命令啓動該文件,該applet可以接收用戶輸入,並在jrepository中註冊tuxedo service以及service的輸入輸出參數等等,只有註冊之後才能通過jolt訪問tuxedo service.
2. Weblogic的配置
3.1.3. 配置jolt pool
<JoltConnectionPool FailoverAddresses="//10.16.73.31:9000"
Name="MyJoltPool" PrimaryAddresses="//10.16.73.31:9000" Targets="myserver"/>
/*//10.16.73.31:9000是ubbconfig中JSL指定的地址。
*/
3.1.4. 配置startup class, shutdown class
<ShutdownClass
ClassName="bea.jolt.pool.servlet.weblogic.PoolManagerShutDown"
Name="MyJoltPoolShutdown" Targets="myserver"/>
<StartupClass
ClassName="bea.jolt.pool.servlet.weblogic.PoolManagerStartUp"
Name="MyJoltPoolStart" Targets="myserver"/>
3. 程序調用例子
import bea.jolt.pool.SessionPoolManager;
import bea.jolt.pool.servlet.ServletResult;
import bea.jolt.pool.servlet.ServletSessionPool;
import bea.jolt.pool.ServiceException;
import weblogic.utils.http.QueryParams;
import weblogic.servlet.internal.ServletRequestImpl;
import bea.jolt.pool.ServiceException;
import com.beasys.BootstrapFactory;
import java.util.Properties;
import javax.naming.InitialContext;
String inStr = "dw";
try
{
SessionPoolManager b_mgr = SessionPoolManager.poolmgr;
ServletSessionPool servletSessionPool = (ServletSessionPool) b_mgr.getSessionPool("MyJoltPool");
//構造request
ServletRequestImpl impl = new ServletRequestImpl();
QueryParams q = new QueryParams();
q.put("name", inStr);
impl.setQueryParams(q);
ServletResult servletResult = servletSessionPool.call("TOUPPER", impl, null);
String name = (String) servletResult.getValue("name", 0, "");
}
catch (Exception e)
{
e.printStackTrace();
}
四. CORBA的調用步驟:1. 獲得IDL,並且根據IDL生成java class
2. 配置config.xml文件
<WLECConnectionPool FailoverAddresses="//10.1.10.51:3842"
MaximumPoolSize="10" Name="Sys97WLEPool"
PrimaryAddresses="//10.1.10.51:3842"
Targets="myserver"
WLEDomain="etelecom_server"/>
3. 程序調用例子
import org.omg.CORBA.*;
import com.beasys.*;
import com.beasys.Tobj.*;
//初始化ORB和BEA的Bootstrap,獲得FactoryFinder的對象引用.
Properties prop = new Properties(System.getProperties());
prop.put("org.omg.CORBA.ORBClass", "com.beasys.CORBA.iiop.ORB");
prop.put("org.omg.CORBA.ORBSingletonClass", "com.beasys.CORBA.idl.ORBSingleton");
String[] args = null;
ORB orb = ORB.init(args, prop);
//爲提高性能,從指定的連接池中獲取Tobj_Bootstrap
Tobj_Bootstrap bootstrap = BootstrapFactory.getClientContext("Sys97WLEPool");
//如果從WLEC連接池獲取Tobj_Bootstrap失敗,則根據指定的確CORBA服務器IP和端口初始化Tobj_Bootstrap
if (bootstrap == null)
Tobj_Bootstrap bootstrap = new Tobj_Bootstrap(orb, "corbaloc://10.1.10.27:3842");
org.omg.CORBA.Object factory_finder_oref =
bootstrap.resolve_initial_references("FactoryFinder");
FactoryFinder factory_finder_ref = FactoryFinderHelper.narrow(factory_finder_oref);
//實例化後臺系統的CB_Service操作接口
org.omg.CORBA.Object srv_factory_ref =
factory_finder_ref.find_one_factory_by_id(FindFactoryHelper.id());
FindFactory find_factory = FindFactoryHelper.narrow(srv_factory_ref);
CB_BondService service = find_factory.find_CB_BondService();
StringHolder outXml = new StringHolder();
String inXml="";
service.businessProcess(inXml,outXml);
System.out.println("outXml:"+outXml.value);