b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

tuxedo wsl wsh_tuxedo wtc_tuxedo crdl

电脑杂谈  发布时间:2017-02-03 07:08:13  来源:网络整理
tuxedo wtc

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

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.注册tuxedoservice

2.Weblogic的配置

3.1.3.配置joltpool

3.1.4.配置startupclass,shutdownclass

3.程序调用例子

四.CORBA的调用步骤:

1.获得IDL,并且根据IDL生成javaclass

2.配置config.xml文件

3.程序调用例子

-----------------------------------------------正文-------------------------------------------------------------------------

一.调用方式

WEBLOGIC与TUXEDO的调用有三种方式

1.WTC(WEBLOGICTUXEDOCONNECTOR)

2.JOLT

3.CORBA(CommonObjectRequestBrokerArchitecture)

WTC不仅能让WEBLOGIC调用TUXEDO中的SERVICE,而且能让TUXEDO调用WEBLOGIC中的EJB,但是只能用于WEBLOGIC与TUXEDO之间进行互连。

JOLT只能让WEBLOGIC调用TUXEDO.但JOLT可以使TUXEDO与WEBSPERE等其他应用服务器相连。tuxedo wtc

CORBA是通用对象请求代理体系结构(CommonObjectRequestBrokerArchitecture)的英文缩写,这是标准化组织OMG提出的一种实现分布式异构环境下面向对象软件的可重用、可移植、可互操作的体系结构。只要符合CORBA规范的服务器之间都可以互联。

二.WTC配置步骤:

1.Tuxedo的配置

2.1.1.设置环境变量:

setTUXDIR=C:\bea\tuxedo8.0

setAPPDIR=C:\bea\tuxedo8.0\samples\atmi\simpapp

setPATH=%TUXDIR%\bin;%APPDIR%;%PATH%

setTUXCONFIG=%APPDIR%\tuxconfig编译之后生成的2进制配置文件.tuxconfig

setBDMCONFIG=%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  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

IPCKEY123456

DOMAINIDsimpapp

MASTER

MAXACCESSERS50

MAXSERVERS25

MAXSERVICES50

MODELSHM

LDBALN

*MACHINES

"SZ-XJS-DUANW"

LMID=

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=GRPNO=1OPENINFO=NONE

GROUP2

LMID=GRPNO=2OPENINFO=NONE

*SERVERS

simpservSRVGRP=GROUP1SRVID=1

/*simpserv编译生成的可执行文件名字*/

DMADMSRVGRP=GROUP2SRVID=2

/*域间通信的进程:管理域的server,在运行时管理BDMCONFIG,对已登记的gatewaygroup提供支持,在tuxedo系统中,只能有一个DMADM进程,且不能对它采用MSSQ,不能有REPLYQ.*/

GWADMSRVGRP=GROUP2SRVID=3

/*管理域的域网关进程,在运行时可以对某一组域网关进行管理,主要从DMADM那里取得域的配置信息,并对域网管进程及跨越域的全局事务的LOG文件进行管理.*/

GWTDOMAINSRVGRP=GROUP2SRVID=4

/*处理域之前的互操作,使本地域和调用远程域可以互相调用彼此的service,其中GMADM和GWTDOMAIN必须在一个组中,一个tuxedo应用可以有多个GWADM,GWTDOMAIN对,一个组只能有一个GMADM,GWTDOMAIN对,但一个tuxedo应用只能有一个DMADM,DMADM可以在如何一个组中,一个本地域可以和多个远程域实现互操作.*/

*SERVICES

TOUPPER

/*TOUPPER是simpserv文件中的函数名字,该函数就被发布为属于server:simpserv中的一个tuxedoservice*/

2.1.4.编译ubbconfig文件

Tmloadcf?yubbconfig

2.1.5.配置domconfig

*DM_RESOURCES

VERSION=U22

*DM_LOCAL_DOMAINS

/*DM_LOCAL_DOMAINS定义本地tuxedo域的信息,分别定义该域所在的组,域类型,域的唯一标识,域间通信时日志的全路径,其中GWGRP,DOMAINID的值要与ubb文件中的定义匹配.*/

TDOM1GWGRP=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标识需要与在weblogicserver中的配置名称吻合,否则通信将会失败*/

TDOM2TYPE=TDOMAIN

DOMAINID="TDOM2"

*DM_TDOMAIN

/*DM_TDOMAIN定义在DM_LOCAL_DOMAIN中已经说明的本地域和在DM_REMOTE_DOMAINS中已经说明的远程域的具体的通信ip地址以及通信端口,其中NWDEVICE指定tuxedo发布的server通信进程文件所在的路径*/

TDOM1NWADDR="//10.16.73.31:9998"

TDOM2NWADDR="//10.16.73.31:9999"

*DM_REMOTE_SERVICES

/*DM_REMOTE_SERVICES定义当前域需要调用远程域的服务名称*/

TOLOWERRDOM="TDOM2"

*DM_LOCAL_SERVICES

/*DM_LOCAL_SERVICES定义当前域对外发布的tuxedoservice名称,可以通过RNAME重新命名service;该service可以被其他域中的服务调用*/

TOUPPERRNAME="TOUPPER"

2.1.6.编译domconfig

dmloadcf-ydomconfig

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与在tuxedodm文件中*DM_REMOTE_DOMAINS节中指定的domainid相同;NWAddr与*DM_TDOMAIN节中相应的NWADDR相同

WTCRemoteTuxDom中的AccessPointId与在tuxedodm文件中*DM_REMOTE_DOMAINS节中指定的domainid相同;NWAddr与*DM_TDOMAIN节中相应的NWADDR相同

WTCImport中的ResourceName与在tuxedoubb文件中SERVICES节点中指定的服务名相同;RemoteName与在tuxedodm文件中*DM_LOCAL_SERVICES节中发布的服务名相同(可以省略)

WTCImport中的ResourceName与在tuxedodm文件中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个tuxedogroup:

JSLGRPLMID=GRPNO=5OPENINFO=NONE

JREPGRPLMID=GRPNO=6OPENINFO=NONE

在ubb文件*SERVERS节点中增加如下2个tuxedoserver:

JSLSRVGRP=JSLGRPSRVID=22210CLOPT="-A---n//tuxedoserver_ip:port-m5-M10-x5"

JREPSVRSRVGRP=JREPGRPSRVID=22220CLOPT="-A---W-P$(TUXDIR)/udataobj/jolt/repository/jrepository"

在ubb文件*MACHINES节点中增加MAXWSCLIENTS=10

*RESOURCES

IPCKEY123456

DOMAINIDsimpapp

MASTER

MAXACCESSERS50

MAXSERVERS25

MAXSERVICES50

MODELSHM

LDBALN

*MACHINES

"SZ-XJS-DUANW"

LMID=

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=GRPNO=1OPENINFO=NONE

GROUP2

LMID=GRPNO=2OPENINFO=NONE

JSLGRP

LMID=GRPNO=5OPENINFO=NONE

JREPGRP

LMID=GRPNO=6OPENINFO=NONE

*SERVERS

simpservSRVGRP=GROUP1SRVID=1

DMADMSRVGRP=GROUP2SRVID=2

GWADMSRVGRP=GROUP2SRVID=3

GWTDOMAINSRVGRP=GROUP2SRVID=4

JSLSRVGRP=JSLGRPSRVID=10CLOPT="-A---n//10.16.73.31:9000-m5-M10-x5"

JREPSVRSRVGRP=JREPGRPSRVID=20CLOPT="-A---W-PC:/bea/tuxedo8.0/udataobj/jolt/repository/jrepository"

/**当通过jolt实现tuxedo,weblogic互连时,JSL,JREPSVR是在tuxedo中必须发布启动的2个server*/

*SERVICES

TOUPPER

3.1.2.注册tuxedoservice

打开Tuxedo安装目录下的udataobj/jolt/子目录下RE.html文件,其中包含javaapplet,可通过appletviewerRE.html命令启动该文件,该applet可以接收用户输入,并在jrepository中注册tuxedoservice以及service的输入输出参数等等,只有注册之后才能通过jolt访问tuxedoservice.

2.Weblogic的配置

3.1.3.配置joltpool

<JoltConnectionPoolFailoverAddresses="//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.配置startupclass,shutdownclass

<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生成javaclass

2.配置config.xml文件

<WLECConnectionPoolFailoverAddresses="//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);


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-30249-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 莫惠双
        莫惠双

        必须给他弄沉

      • 杨向阳
        杨向阳

        中国的腿还没的粗

      • 张寒丽
        张寒丽

        纯网时代下的新生代经济——给新生代偶像搭建了一个全方位展示其商业价值的平台

      热点图片
      拼命载入中...