IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

IBM WebSphere 系列产品和 BEA Tuxedo Server 的集成方案,第 2 部分: 通过 XUG 建立IBM WebSphere Application Server 和BEA Tuxedo Server 的访问通路

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

曹 世锋 (caoshif@cn.ibm.com), 解决方案专家
张 羽 (alfzhang@cn.ibm.com), 解决方案专家
兰 建忠 (lanjz@cn.ibm.com), 解决方案专家
拱 旭升 (gongxsh00@cn.ibm.com), 解决方案专家

2007 年 1 月 04 日

当实施了“IBM WebSphere 系列产品和 BEA Tuxedo Server 的集成方案”第 1 部分中的方案后,应用程序可以通过 WebSphere 提供的标准 J2EE 接口访问 Tuxedo 应用。接下来,我们将讨论如何让 Tuxedo 应用程序访问基于 J2EE 的企业应用,实现 J2EE 服务和 Tuxedo 服务的双向调用。

1.方案简介

1.1. 问题介绍

当实施了“IBM WebSphere系列产品和BEA Tuxedo Server的集成方案”第 1 部分中的方案后,应用程序可以通过 WebSphere 提供的标准 J2EE 接口访问 Tuxedo 应用。接下来,怎样才能让Tuxedo应用程序访问基于J2EE的企业应用,实现J2EE服务和Tuxedo服务的双向调用呢?

1.2. 解决方案

产品XMLink Universal Gateway(XUG),提供了Tuxedo应用访问WebSphere服务的能力。使用了XUG,Tuxedo应用程序就可以像访问其它Tuxedo服务一样来访问其它企业应用程序提供的服务,这使得在保留原有Tuxedo应用程序的同时,增加了Tuxedo应用程序对其他类型企业应用程序提供的服务的访问能力。

1.3. XUG简介


图 1 1 XUG应用方案示意图
图 1 1 XUG应用方案示意图

图 1 1是解决方案的系统框架,下面将对系统中的要素逐一介绍。

1.3.1. Tuxedo客户端(Tuxedo Client)

在应用了XUG以后,Tuxedo客户端使用通常的tpcall方法调用服务。XUG不需要在Tuxedo客户端上安装。当你想调用新的企业服务以增强Tuxedo应用时,你只需要配置XUG Tuxedo server向Tuxedo客户端通告这些服务。

1.3.2. XUG

从图 1 1可以看到,XUG由四个部分组成:

  • XUG Tuxedo Server:XUG Tuxedo Server是一个完整的Tuxedo Server,其主要作用是向Tuxedo应用通告用户配置的企业应用。
  • Data Translation(数据转换):Date Translation主要负责Tuxedo缓冲结构FML和XUG XML之间的转换。
  • Delivery Agent(分发代理):分发代理指XUG和企业信息系统之间交换消息的方式。Delivery Agent模块的功能是控制数据怎样传输及调用对应的企业服务监听器。如,当用户指定分发代理为"通过HTTP传输SOAP"时,Delivery Agent将调用SOAP监听器提供的相应企业服务
  • XUG Adapter EJB。XUG Adapter EJB部署在WebSphere上,用在"通过IIOP传输RMI"时。当其得到调用请求时,通过SOAP调用企业服务

1.3.3. 企业信息系统

企业信息系统可以是一个J2EE应用服务器,如IBM WebSphere Application Server。企业信息系统中包含:部署的企业服务,用户选择协议的监听器(SOAP-RPC,RIM/IIOP)以及XUG Adapter EJB。XUG可以使用三种分发代理调用企业信息系统的服务:

  • SOAP-RPC:使Tuxedo应用程序可以与处理SOAP协议的企业应用系统交互,甚至包括.NET服务。
  • RMI/IIOP:适用于J2EE应用服务器配置用于处理RMI/IIOP请求时,需要在企业信息系统上安装XUG Adapter EJB, XUG Adapter EJB处理RMI/IIOP请求,将之提交到SOAP层。
  • EJB:XUG直接与包含业务逻辑的EJB交互。不使用SOAP,XUG Adapter EJB。

1.4. 使用XUG的优点

使用XUG实现Tuxedo应用访问WebSphere服务,有以下优点:

  • 不改变Tuxedo编程方法:Tuxedo客户端使用标准的Tuxedo服务调用函数tpcall调用XUG Tuxedo Server发布的企业应用,与调用普通的Tuxedo服务并无区别。
  • 不改变WebSphere J2EE框架:XUG在调用WebSphere服务时,三种分发代理方式都符合J2EE规范,这样的设计,使J2EE设计人员在做J2EE设计时,完全不需要为Tuxedo客户端调用做额外的考虑,只需要按照规范的J2EE规范发布企业服务即可。
  • 结构灵活,便于扩展:用户在首次完成XUG的安装和配置以后,如果需要添加新的J2EE服务调用,只需要修改两个XML配置文件即可完成,使得功能扩展变得十分简单。
  • 整合风险小:用户在安装配置XUG的过程中,对原有的J2EE服务和Tuxedo服务都不构成影响,大大降低了用户整合的风险。




回页首


2.安装XUG


图 2 1 XUG的安装需要
图 2 1 XUG的安装需要

如图 2 1所示,使用XUG的系统中通常有BEA Tuxedo客户端 (BEA Tuxedo Client),BEA Tuxedo服务器 (BEA Tuxedo Server),企业信息系统(EIS)三种类型的计算机。不过,一台计算机也可以用做多种类型,这三种计算机对XUG的安装需要如下表:

计算机类型XUG安装需要
BEA Tuxedo Client不需要安装
BEA Tuxedo ServerGateway Tuxedo Server
Gateway Core Files
EIS使用RMI/IIOP方式时需要安装:
Gateway Core Files
Gateway Adapter EJB
使用SOAP-RPC、RMI/IIOP方式:不需要安装

在确定了应用系统结构和要使用的分发代理以后,就可以开始安装XUG了。运行安装包中的setup.exe,在安装界面(图 2 2)中点击Install。


图 2 2 XUG安装界面
图 2 2 XUG安装界面

接下来的安装与普通程序的安装相同。在"Select Componets"步骤中,如图 2 3,程序将提示选择在本地计算机上将要安装的组件。此时,可以根据前面的介绍选择必要的组件即可。


图 2 3 选择要安装的XUG组件
图 2 3 选择要安装的XUG组件

继续点击Next,程序安装成功后可以看到图 2 4的提示。


图 2 4 XUG安装成功
图 2 4 XUG安装成功

在Windows操作系统上XUG的默认安装路径是 C:\Program Files\Prolifics\XMLink Universal Gateway 本文中的配置和例程都以这个路径说明。

下面,可以按照您计划配置的方式阅读后面的章节:
第3章,以SOAP-PRC方式配置XUG。
第4章,以RMI/IIOP方式配置XUG。
第5章,以EJB方式配置XUG。





回页首


3.以SOAP-PRC方式配置XUG

在本章,将介绍以SOAP-PRC为分发代理配置XUG的要点。

以SOAP-PRC为分发代理时,只需要在BEA Tuxedo服务器上安装和配置XUG,以下3.1~3.7节的配置都在BEA Tuxedo服务器进行,3.8节介绍了调用Web Service的注意事项,3.9节介绍了例程的使用。

3.1. 准备文件

从XUG安装目录中config文件夹复制下列文件和模版到BEA Tuxedo服务器上Tuxedo应用程序的目录(即APPDIR环境变量指定的目录,以下简称%APPDIR%)。

  • SampleSoapRegistry.xml
  • SampleTuxedoRegistry.xml
  • Gateway.properties
  • passthru.xsl (可选)
  • SoapRegistry.xsd (可选,校验SampleSoapRegistry.xml)
  • TuxedoRegistry.xsd (可选,校验SampleTuxedoRegistry.xml)

为了方便使用,可以把SampleSoapRegistry.xml重命名为默认文件名SoapServices.xml,SampleTuxedoRegistry.xml重命名为TuxedoServices.xml。否则需要配置指定,XUG才能找到这两个文件,参考1.6,1.11节。

3.2. 配置Gateway Tuxedo Server

首先,确保您已经正确安装配置了BEA Tuxedo。假设您已经有了一个可以正常运行的Tuxedo应用程序,接下来,我们通过修改%APPDIR%下ubbconfig文件,在这个应用程序中添加配置Gateway Tuxedo Server。

用文本编辑器打开ubbconfig文件,在其中的SERVERS段增加以下内容:


gateway		SRVGRP=GROUP1 SRVID=2 CLOPT="-A -- "

其中SRVGRP和SRVID的值根据实际情况设置。在SERVICES段增加:


GATEWAY_SERVICE

注意:可以使用CLOPT参数中-J选项来指定JVM设置。因为Tuxedo对CLOPT的长度有限制,所以一般使用配置文件指定JVM设置,参考1.11节。下面的例子中,我们指定Gateway Tuxedo Server的配置文件名为MyGateway.properties。


		CLOPT="-A -- -J \"-DXUG.Config=MyGateway.properties\""
	

3.3. 配置环境变量

1.配置Tuxedo环境变量

为了能使Tuxedo正常运行,应当正确设置以下系统环境变量:

TUXDIR指定Tuxedo的安装目录,如" C:\bea\tuxedo8.1"
APPDIR指向Tuxedo应用(Tuxedo application)文件所在的目录, 如" C:\home\me\simpapp"
TUXCONFIG指向Tuxedo配置文件的位置,如"%APPDIR%/tuxconfig"
FIELDTBLS
FIELDTBLS32
指定包含FML/FML32字段表信息的文件名,如"myfml.flds"
FLDTBLDIR
FLDTBLDIR32
指定FIELDTBLS/ FIELDTBLS32的搜索路径,可以不在% APPDIR %下

2.配置Gateway Tuxedo Server环境变量

XUG提供了Gateway Tuxedo Server程序及其动态连接库,可以在XUG的安装目录下找到。

在Tuxedo Server机上,配置环境变量PATH,让其包含指向gateway.exe和tconnn.dll(如果使用的是Tuxedo6.5,则是tconn6n.dll)的目录。如" C:\Program Files\Prolifics\XMLink Universal Gateway\util\tux"。

注意:在实际使用时,我们发现,如果PATH路径中不含jvm.dll,Gateway.exe将无法运行。以SOAP-IIOP配置XUG时,使用Sun JDK或IBM JDK都可以,找到已经安装JDK中的jvm.dll文件,在PATH中加入路径,如: C:\Program Files\ibm\ws\ADIE\runtimes\ee_v51\java\jre\bin\classic

3.4. 配置Gateway Tuxedo Server所需的JAVA环境变量

为了能使Gateway Tuxedo Server正常运行,需要在环境变量CLASSPATH中添加以下jar的位置:

JAR说明位置
Gateway.jarGateway适配器文件可在XUG的安装目录下找到
j2ee.jarJ2EE连接器结构类和JNDI服务可在IBM Websphere Application Server运行环境中搜索找到。
soap.jarSOAP RPC类
xercers.jarXML解析,应使用1.4.2或更高
xalan.jarXSL数据转换
mail.jarcom.sun.mail.util.*

3.5. 配置Gateway Tuxedo Server的服务

Gateway Tuxedo Server要发布的企业服务都罗列在XML格式的Tuxedo服务定义文件中。Tuxedo服务定义文件默认的文件名是TuxedoServices.xml,你也可以通过JVM参数XUG.TuxedoServices定义自己的文件名,参考1.6,1.11节。下面给出一个例子:



<?xml version="1.0" encoding="utf-8"?>
<!-- Web Services to be advertised as Tuxedo services -->
<tuxedo-service-registry
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="TuxedoRegistry.xsd">
	<Service>
    	<ServiceName>ConvertC2F</ServiceName>
        <TuxedoAdvertise>ConvertC2F</TuxedoAdvertise>
        <TuxedoInputType>
        		<FML>
				<field name="celsiusValue"/>
			</FML>
        </TuxedoInputType>
        <TuxedoOutputType>
        		<FML>
        			<field name="celsiusToFahrenheitReturn"/>
        		</FML>
        </TuxedoOutputType>
	</Service>	
</tuxedo-service-registry>

这个文件中主要包含以下设置:

Service设置一个服务,在一个< tuxedo-service-registry >标签中可以设置多个服务。
ServiceName设置参考服务名,这个名称与SOAP定义文件中<service>标签中alias属性对应,参考1.10节。
TuxedoAdvertise设置通知的Tuxedo服务名,Tuxedo客户端可以直接使用这个服务名调用服务。
TuxedoInputType设置Tuxedo客户端的输入类型,可以是FML, FML32, STRING, CARRAY。也可以像例子中一样嵌套<FML>, <FML32>标签。
TuxedooutputType设置向Tuxedo客户端的输出类型, 可以是FML, FML32, STRING, CARRAY。也可以像例子中一样嵌套<FML>, <FML32>标签。注意:XUG使用其中<field>标签的name属性作为返回FML字段名。如果返回的XML数据中不包含name参数,则使用TuxedooutputType列表中的第一个名字或默认值return作为FML字段名。如果TuxedooutputType列表为空,则不返回数据。 当企业服务返回复杂SOAP类型时,复杂类型的元素将与多个FML字段按照name自动匹配,也可以通过数据转换定制。
FML设置FML缓冲区的字段定义。
FML32设置FML32缓冲区的字段定义。
fieldFML/FML32中的元素,其name属性指定了Tuxedo字段名。 注意:当作为输入时,name名称必须与SOAP-RPC的输入参数名称匹配。当作为输出,且SOAP-RRC返回复杂类型时,这个名称须与复杂类型的元素名称匹配。

3.6. 配置SOAP-RPC的服务

SOAP-RPC服务在Gateway SOAP定义文件中定义,这个文件的默认文件名是SoapServices.xml,也可以在JVM属性XUG.SoapServices中设置,参考1.6,1.11节。下面是一个SOAP定义文件的例子:



<?xml version="1.0" encoding="UTF-8"?>
<soap-service-registry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xsi:noNamespaceSchemaLocation="SoapRegistry.xsd">
  <endpoint ID="ep1">
    <URL>http://localhost:9080/TemperatureWeb/services/
	ConvertTemperature</URL>
    <targetObjectURI>http://www.w3.org/2001/XMLSchema</
	targetObjectURI>
  </endpoint>
  <service alias="ConvertC2F" soap-action="WASignores" IDREF="ep1">
    <method-name>celsiusToFahrenheit</method-name>
    <message-in namespace="" typename="">
    	<param name="celsiusValue" type="xsd:double"></param>
    </message-in>
    <message-out namespace="http://sample"
	typename="celsiusToFahrenheitResponse">
    <param name="celsiusToFahrenheitReturn" type="xsd:double"/> 
    </message-out>
  </service>
  
</soap-service-registry>

这个文件包括以下设置:

endpoint指定要连接的SOAP endpoint。ID属性为endpoint起了一个别名,可以在后面配置服务时引用。
URL指定SOAP endpoint的URL连接。
targetObjectURI指定SOAP endpoint的targetObjectURI。这个设置应当与WSDL文件中soap:body元素的属性namespace相对应。
service配置一个企业服务的描述。
alias属性指定了参考服务名,与Tuxedo服务定义文件中<ServiceName>标签对应,参考1.10节。
soap-action属性指定了要使用的SOAP action (在WAS中忽略soap-action属性)。
method-name指定企业服务的名字。
message-in企业服务的输入消息。
message-out企业服务的输出消息。
param指定输入输出参数。
注意:配置输入参数时,param与wsdl文件的消息(message)部分part标签的name属性相对应。name属性值应当为对应的简单SOAP类型。简单SOAP类型的数组如ArrayOfShort、ArrayOfString也可以使用。 配置输出类型时,type和name属性被忽略,这些由返回的XML决定。XUG可以接受企业服务返回的复杂类型,但是这些复杂类型的元素必须为简单SOAP类型或者是XugReturn bean。

3.7. 配置Gateway Tuxedo Server的属性

Java系统属性可以配置在配置文件中,或者在JVM命令参数中。配置文件就是我们开始复制到工作目录下的Gateway.properties

以下解释一些主要的配置:

XUG.Config(可选)指定配置文件的配置文件名。默认值是Gateway.properties。如果要修改这个配置,必须在JVM命令参数中指定,参考1.6节。
XUG.Server(可选)指定使用的Gateway Tuxedo Server组件。默认值是com.prolifics.xug.server.tuxedo. TuxedoServer,而且也是目前唯一支持的组件。
XUG.DeliveryAgent指定使用的发送代理(delivery agent),可选值有SOAP-RPC,RMI/IIOP或EJB,此时选择RMI/IIOP或默认值。
XUG.TuxedoServices(可选)指定使用的Tuxedo服务定义文件。默认值是TuxedoServices.xml。
XUG.SoapServices(可选)指定使用的SOAP服务定义文件,默认值是SoapServices.xml。
XUG.Interface.endpointx.URL
XUG.Interface.endpointx.TargetObjectURI
(可选)指定默认的SOAP endpoint的URL和TargetObjectURI,当SOAP服务定义文件(SoapServices.xml)中有配置时将被覆盖。

3.8. 配置企业应用程序

以SOAP-PRC为分发代理时,不需要企业应用服务器上配置,但有要注意编码问题。 注意:Web Service常用的SOAP绑定方式有文档/文字,RPC/文字,RPC/编码三种,通过我们的实验,XUG只能接受RPC/编码一种。

3.9. 以SOAP-RPC方式配置的例程

下面提供一个XUG例程,帮助大家快速配置XUG。在例程运行成功后,可以通过修改例程,快速开发自己的XUG应用。要运行例程,请按照以下步骤:

1.先决条件

在运行前,应当确保

  • 安装了WSAD5且可以正常运行,
  • 安装了Tuxedo7以上且可以正常运行
  • 正确安装了XUG。

2.在WAS上部署 Web Service

  • 在WSAD中新建一个J2EE1.3版本的企业应用项目,命名为WSTestEAR。

    图 3 1 新建企业应用项目
    图 3 1 新建企业应用项目

    在向导的EAR Module Projects页中新建一个Web Project:WSTest,如图 3 2所示

    图 3 2 新建企业应用项目时新建Web项目
    图 3 2 新建企业应用项目时新建Web项目

  • 新建完成后,在项目WSTest上点击右键,选择导入Web模块。导入sample中提供的WSTest.war。

    图 3 3 导入Web模块
    图 3 3 导入Web模块

  • 执行Build all后,将WSTestEAR添加到服务器。
  • 重启服务器,运行Test with Web Services Explorer,如图 3 4所示:

    图 3 4 运行Test with web Services Explorer
    图 3 4 运行Test with web Services Explorer

  • 如图 3 5,选中celsiusToFahrenheit,在文本框中输入24,点击"执行"按钮,如果在下面的"状态"中返回 celsiusToFahrenheitReturn(double):75.2 则说明Web Service安装成功。

    图 3 5 验证Web Service
    图 3 5 验证Web Service

3.准备Tuxedo应用程序文件

从sample.zip中解压home文件夹,直接放到C盘根目录下。

4.编辑文件

在C:\home\me\xug_soap_rpc下用文本编辑器打开run.bat,根据当前计算机的实际情况编辑开头的环境变量。

JAVA_HOME指定JDK的安装目录,注意JDK的版本不要过低。
XUG_HOME指定XUG的安装目录
APPDIR如果上一步中解压的home文件夹没有放入指定目录下,则应使变量APPDIR指向xug_soap_rpc文件夹。注意:同时应当修改ubbsimple文件中APPDIR和TUXCONFIG配置。

打开xug_soap_rpc文件夹中的ubbsimple文件,修改以下行:

TUXDIR="C:\bea\tuxedo8.1"指向Tuxedo的安装目录
IBMUSER LMID=simple将IBMUSER修改为当前计算机的计算机名。注意:计算机名中间不能带连接符-。
APPDIR=
TUXCONFIG=
如果上一步中解压的home文件夹没有放入指定目录下,则应修改。

5.运行例程

双击运行run.bat,就可以看到运行结果了。如果看到运行结果:


Send buffer is:
celsiusValue    24

Received buffer is:
celsiusToFahrenheitReturn       75.2

就证明安装和配置都正确了。





回页首


4. 以RMI/IIOP方式配置XUG

在本章,将介绍以RMI/IIOP为分发代理配置XUG的要点。

以RMI/IIOP为分发代理配置XUG时,需要分别在BEA Tuxedo服务器和企业信息系统安装和配置XUG。本章4.1~4.6节介绍了在BEA Tuxedo服务器上的配置,4.7~4.10节介绍了在企业信息系统(WAS)上的配置,4.11节讲解了例程的使用。

4.1. 准备文件

从XUG安装目录中config文件夹复制下列文件和模版到BEA Tuxedo服务器上Tuxedo应用程序的目录(即APPDIR环境变量指定的目录,以下简称%APPDIR%)。

  • SampleTuxedoRegistry.xml
  • Gateway.properties
  • passthru.xsl (可选)
  • TuxedoRegistry.xsd (可选,校验SampleTuxedoRegistry.xml)

为了方便使用,把SampleTuxedoRegistry.xml重命名为Tuxedo服务定义文件的默认名TuxedoServices.xml,否则需要额外的配置,参考1.15,1.19节。

从XUG安装目录中config文件夹复制下列文件和模版到企业信息系统(WAS)目录下。如我在C盘Program Files下安装了WASD IE版本,则这个目录指的是 C:\Program Files\IBM\WS\ADIE

  • SampleSoapRegistry.xml
  • Gateway.properties
  • SoapRegistry.xsd (可选,校验SampleSoapRegistry.xml)

为了方便使用,把SampleSoapRegistry.xml重命名为Gateway SOAP定义文件的默认名SoapServices.xml。

注意:如果暂时无法确定这些文件放置在哪里,可以稍候进行。如果运行时提示找不到SoapServices.xml文件,把这些文件放到提示的目录下就可以了。

4.2. 配置Gateway Tuxedo Server

首先,确保您已经正确安装配置了BEA Tuxedo。假设您已经有了一个可以正常运行的Tuxedo应用程序,接下来,我们通过修改%APPDIR%下ubbconfig文件,在这个应用程序中添加配置Gateway Tuxedo Server。

用文本编辑器打开ubbconfig文件,在其中的SERVERS段增加以下内容:


gateway		SRVGRP=GROUP1 SRVID=2 CLOPT="-A -- "

其中SRVGRP和SRVID的值根据实际情况设置。

在SERVICES段增加新的一行:


GATEWAY_SERVICE

注意:可以使用CLOPT参数中-J选项来指定JVM设置。因为Tuxedo对CLOPT的长度有限制,所以一般使用配置文件指定JVM设置,参考1.19节。下面的例子中,我们指定Gateway Tuxedo Server的配置文件名为MyGateway.properties。


		CLOPT="-A -- -J \"-DXUG.Config=MyGateway.properties\""
	

4.3. 配置环境变量

1.配置Tuxedo环境变量

为了能使Tuxedo正常运行,应当正确设置以下系统环境变量:

TUXDIR指定Tuxedo的安装目录,如" C:\bea\tuxedo8.1"
APPDIR指向Tuxedo应用(Tuxedo application)文件所在的目录, 如" C:\home\me\simpapp"
TUXCONFIG指向Tuxedo配置文件的位置,如"%APPDIR%/tuxconfig"
FIELDTBLS
FIELDTBLS32
指定包含FML/FML32字段表信息的文件名,如"myfml.flds"
FLDTBLDIR
FLDTBLDIR32
指定FIELDTBLS/ FIELDTBLS32的搜索路径,可以不在% APPDIR %下

2.配置Gateway Tuxedo Server环境变量

XUG提供了Gateway Tuxedo Server程序及其动态连接库,可以在XUG的安装目录下找到。

在Tuxedo Server机上,配置环境变量PATH,让其包含指向gateway.exe和tconnn.dll(如果使用的是Tuxedo6.5,则是tconn6n.dll)的目录。如" C:\Program Files\Prolifics\XMLink Universal Gateway\util\tux"。

注意:在实际使用时,我们发现,如果PATH路径中不含jvm.dll,Gateway.exe将无法运行。以RMI/IIOP配置XUG时,需要用到IBM JDK1.4,所以需要在Websphere安装目录下找到相应的JDK路径,然后在PATH中加入其中含jvm.dll的路径,如: C:\Program Files\ibm\ws\ADIE\runtimes\ee_v51\java\jre\bin\classic。

4.4. 配置Gateway Tuxedo Server所需的JAVA环境变量

为了能使Gateway Tuxedo Server正常运行,需要在环境变量CLASSPATH中添加以下jar的位置:

JAR说明位置
Gateway.jar Gateway适配器文件可在XUG的安装目录下找到
j2ee.jarJ2EE连接器结构类和JNDI服务可在IBM Websphere Application Server运行环境中搜索找到。
namingclient.jar与RMI/IIOP调用相关一些IBM JAVA类
xalan.jarXSL数据转换
mail.jarcom.sun.mail.util.*
Deployed_GatewayAdapter .jar部署GatewayAdapter.jar后生成的jar文件参考1.20节

4.5. 配置Gateway Tuxedo Server的服务

Gateway Tuxedo Server要发布的企业服务都罗列在XML格式的Tuxedo服务定义文件中。Tuxedo服务定义文件默认的文件名是TuxedoServices.xml,你也可以通过JVM参数XUG.TuxedoServices定义自己的文件名,参考1.15,1.19节。下面给出一个例子:



<?xml version="1.0" encoding="utf-8"?>
<!-- Web Services to be advertised as Tuxedo services -->
<tuxedo-service-registry
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="TuxedoRegistry.xsd">
	<Service>
    	<ServiceName>ConvertC2F</ServiceName>
        <TuxedoAdvertise>ConvertC2F</TuxedoAdvertise>
        <TuxedoInputType>
        		<FML>
				<field name="celsiusValue"/>
			</FML>
        </TuxedoInputType>
        <TuxedoOutputType>
        		<FML>
        			<field name="celsiusToFahrenheitReturn"/>
        		</FML>
        </TuxedoOutputType>
	</Service>	
</tuxedo-service-registry>

这个文件中主要包含以下设置:

Service 设置一个服务,在一个< tuxedo-service-registry >标签中可以设置多个服务。
ServiceName设置参考服务名,这个名称与SOAP定义文件中<service>标签中alias属性对应,参考1.23节。
TuxedoAdvertise设置通知的Tuxedo服务名,Tuxedo客户端可以直接使用这个服务名调用服务。
TuxedoInputType设置Tuxedo客户端的输入类型,可以是FML, FML32, STRING, CARRAY。也可以像例子中一样嵌套<FML>, <FML32>标签。
TuxedooutputType设置向Tuxedo客户端的输出类型, 可以是FML, FML32, STRING, CARRAY。也可以像例子中一样嵌套<FML>, <FML32>标签。注意:XUG使用其中<field>标签的name属性作为返回FML字段名。如果返回的XML数据中不包含name参数,则使用TuxedooutputType列表中的第一个名字或默认值return作为FML字段名。如果TuxedooutputType列表为空,则不返回数据。
当企业服务返回复杂SOAP类型时,复杂类型的元素将与多个FML字段按照name自动匹配,也可以通过数据转换定制。
FML设置FML缓冲区的字段定义。
FML32设置FML32缓冲区的字段定义。
fieldFML/FML32中的元素,其name属性指定了Tuxedo字段名。 注意:当作为输入时,name名称必须与SOAP-RPC的输入参数名称匹配。当作为输出,且SOAP-RRC返回复杂类型时,这个名称须与复杂类型的元素名称匹配。

4.6. 配置Gateway Tuxedo Server的属性

Java系统属性可以配置在配置文件中,或者在JVM命令参数中。配置文件就是我们开始复制到工作目录下的Gateway.properties。

以下解释一些以RMI/IIOP方式配置时,在Gateway Tuxedo Server端有效的主要配置:

XUG.Config(可选)指定配置文件的配置文件名。默认值是Gateway.properties。如果要修改这个配置,必须在JVM命令参数中指定,参考1.15节。
XUG.Server(可选)指定使用的Gateway Tuxedo Server组件。默认值是com.prolifics.xug.server.tuxedo. TuxedoServer,而且也是目前唯一支持的组件。
XUG.DeliveryAgent指定使用的发送代理(delivery agent),可选值有SOAP-RPC,RMI/IIOP或EJB,此时选择RMI/IIOP。
XUG.TuxedoServices (可选)指定使用的Tuxedo服务定义文件。默认值是TuxedoServices.xml。
XUG.GatewayAdapter.JNDIName(可选)指定查找Gateway Adapter EJB的JNDI名称,默认值是com/prolifics/xug/dda /adapter/GatewayAdapterHome

还要在这个文件中添加一个非常重要的配置属性:


java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory

另外,如果企业信息服务器不在本机,或端口号不是默认的2809,则可以添加如下的配置属性,指定IIOP连接:


java.naming.provider.url=iiop://192.168.1.1:900

4.7. 部署Gateway Adapter EJB

Gateway Adapter EJB应当部署在企业应用服务器上,下面我们以在WSAD测试环境中的部署为例,介绍部署的方法。

1.打开WSAD,切换到J2EE透视图。

2.新建一个EJB项目:


图 4 1 新建EJB项目
图 4 1 新建EJB项目

选择EJB2.0项目。在EJB Project页中填入项目名称GatewayAdapter,不要选择"Create EJB client JAR project"。新建一个EAR项目,GatewayAdapterEAR,如图 4 2所示:


图 4 2 新建EJB项目和EAR项目
图 4 2 新建EJB项目和EAR项目

3.在EJB项目中导入EJB Jar:


图 4 3 导入EJB Jar
图 4 3 导入EJB Jar

如图 4 4,打开导入EJB Jar向导,找到XUG安装目录下lib文件夹中的GatewayAdapter.jar,然后导入。


图 4 4 导入GatewayAdapter.jar
图 4 4 导入GatewayAdapter.jar

导入EJB Jar以后,在GatewayAdapter项目的属性中编译路径中添加Gateway.jar。然后按Ctrl+B编译所有项目。

4.生成部署代码

如图 4 5所示,在EJB项目GatewayAdapter的右键菜单中选择Generate -> Deployment and RMIC Code,生成部署EJB的代码。


图 4 5 生成部署代码
图 4 5 生成部署代码

5.设置查找EJB用的JNDI 打开GateayAdapter项目中ejbModule\ejb-jar.xml文件(可以切换到Project Navigator视图寻找),切换到beans选项卡,在框中选中GatewayAdapter,在右侧JNDI name中填写:


com/prolifics/xug/dda/adapter/GatewayAdapterHome

然后保存文件。


图 4 6 设置JNDI名
图 4 6 设置JNDI名

6.导出部署后的GatewayAdapter Jar文件

在GatewayAdapter项目上点右键,选择导出Jar文件。如图 4 7,导出ejbModule,imported_classes两个文件夹到Deployed_GatewayAdapter.jar文件。


图 4 7 导出部署后Jar文件
图 4 7 导出部署后Jar文件

这个导出后的Jar文件必须添加到Gateway Tuxedo Server的CLASSPATH环境变量中,参考1.16节。

4.8. 配置Webshpere中的JAVA环境变量

1.新建一个测试服务器,然后打开服务器配置页面。在Environment选项卡中的Class Path中添加Gateway.jar,GatewayAdapter.jar和soap.jar(可在Websphere安装文件夹下找到),如图 4 8所示。然后保存文件。


图 4 8 设置Websphere环境变量
图 4 8 设置Websphere环境变量

2.在测试服务器上右键,选择Add and remove projects,从中选择项目GatewayAdapterEAR添加到测试服务器。然后Websphere测试环境将启动。观察控制台,如果启动EJB没有错误,则说明部署成功。


图 4 9 添加EAR项目项目
图 4 9 添加EAR项目项目

4.9. 配置EJB属性文件

Gateway Adapter EJB使用一些和Gateway Tuxedo Server相同的配置属性,如果你使用的都是默认值,那么就不需要额外的配置。对Gateway Adapter EJB有效的配置属性包括:

XUG.Config(可选)指定配置文件的配置文件名。默认值是Gateway.properties。如果要修改这个配置,必须在JVM命令参数中指定。
XUG.SoapServices(可选)指定使用的SOAP服务定义文件,默认值是SoapServices.xml。
XUG.Interface.endpointx.URL
XUG.Interface.endpointx
.TargetObjectURI
(可选)指定默认的SOAP endpoint的URL和TargetObjectURI,当SOAP服务定义文件(SoapServices.xml)中有配置时将被覆盖。

XUG.Config指定了Gateway Adapter EJB使用的配置属性文件,默认值为Gateway.properties。其它的属性都可以在这个文件中配置,但是如果要修改XUG.Config,则只能通过JVM参数配置。如图 4 10所示,我们计划把Gateway Adapter EJB属性文件命名为GatewayAdapter.properties,在WSAD中打开服务器配置,切换到其中的Environment选项卡,在Java VM Arguments框中输入:


-DXUG.Config=GatewayAdapter.properties


图 4 10 配置EJB属性
图 4 10 配置EJB属性

注意:Gateway Adapter EJB属性配置文件中不能将XUG.DeliveryAgent配置成RMI/IIOP,否则将引起致命的错误。

4.10. 配置企业服务

企业服务在Gateway SOAP定义文件中定义,这个文件的默认文件名是SoapServices.xml,也可以在JVM属性XUG.SoapServices中设置。在RMI/IIOP实现中,Gateway SOAP定义文件放在企业应用程序一端。下面是一个SOAP定义文件的例子:



<?xml version="1.0" encoding="UTF-8"?>
<soap-service-registry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xsi:noNamespaceSchemaLocation="SoapRegistry.xsd">
  <endpoint ID="ep1">
    <URL>http://localhost:9080/TemperatureWeb/
	services/ConvertTemperature</URL>
    <targetObjectURI>http://www.w3.org/2001/
	XMLSchema</targetObjectURI>
  </endpoint>
  <service alias="ConvertC2F" soap-action="WASignores" IDREF="ep1">
    <method-name>celsiusToFahrenheit</method-name>
    <message-in namespace="" typename="">
    	<param name="celsiusValue" type="xsd:double"></param>
    </message-in>
    <message-out namespace="http://sample"
	typename="celsiusToFahrenheitResponse">
    <param name="celsiusToFahrenheitReturn" type="xsd:double"/> 
    </message-out>
  </service>
  
</soap-service-registry>

这个文件包括以下设置:

endpoint指定要连接的SOAP endpoint。ID属性为endpoint起了一个别名,可以在后面配置服务时引用。
URL指定SOAP endpoint的URL连接。
targetObjectURI指定SOAP endpoint的targetObjectURI。这个设置应当与WSDL文件中soap:body元素的属性namespace相对应。
service配置一个企业服务的描述。
alias属性指定了参考服务名,与Tuxedo服务定义文件中<ServiceName>标签对应,参考1.18节。
soap-action属性指定了要使用的SOAP action (在WAS中忽略soap-action属性)。
method-name指定企业服务的名字。
message-in企业服务的输入消息。
message-out企业服务的输出消息。
param指定输入输出参数。

注意:配置输入参数时,param与wsdl文件的消息(message)部分part标签的name属性相对应。name属性值应当为对应的简单SOAP类型。简单SOAP类型的数组如ArrayOfShort、ArrayOfString也可以使用。

配置输出类型时,type和name属性被忽略,这些由返回的XML决定。XUG可以接受企业服务返回的复杂类型,但是这些复杂类型的元素必须为简单SOAP类型或者是XugReturn bean。

1.24. 以RMI/IIOP方式配置的例程

下面提供一个以RMI/IIOP配置XUG的例程,帮助大家快速配置XUG。在例程运行成功后,可以通过修改例程,快速开发自己的XUG应用。要运行例程,请按照以下步骤:

1.先决条件

在运行前,应当确保

  • 安装了WSAD5且可以正常运行
  • 安装了Tuxedo7以上且可以正常运行
  • 正确安装了XUG

2.在WAS上部署Gateway Adapter EJB

请参考1.20,1.21节部署Gateway Adapter EJB并配置WAS的环境变量,不需要导出Deployed_GatewayAdapter.jar,启动WAS。如果启动时Gateway Adapter EJB部分的提示没有错误,则证明Gateway Adapter EJB安装成功,如图 4 11所示:


图 4 11 Gateway Adapter EJB成功启动
图 4 11 Gateway Adapter EJB成功启动

3.在WAS上安装Web Service

  • 在WSAD中新建一个J2EE1.3版本的企业应用项目,命名为WSTestEAR。

    图 4 12 新建企业应用项目
    图 4 12 新建企业应用项目

    在向导的EAR Module Projects页中新建一个Web Project:WSTest,如图 4 13所示:

    图 4 13 新建企业应用项目时新建Web项目
    图 4 13 新建企业应用项目时新建Web项目

  • 新建完成后,在项目WSTest上点击右键,选择导入Web模块。导入sample中提供的WSTest.war。

    图 4 14 导入Web模块
    图 4 14 导入Web模块

  • 执行Build all后,将WSTestEAR添加到服务器。
  • 重启服务器,运行Test with Web Services Explorer,如图 4 15所示:

    图 4 15 运行Test with Web Services Explorer
    图 4 15 运行Test with Web Services Explorer

  • 如图 4 16,选中celsiusToFahrenheit,在文本框中输入24,点击"执行"按钮,如果在下面的"状态"中返回 celsiusToFahrenheitReturn(double):75.2 则说明Web Service安装成功。

    图 4 16 验证Web Service
    图 4 16 验证Web Service

  • 放置配置文件。复制Sample.zip压缩包中的RMI_IIOP EIS Files文件夹下的Gateway.properties和SoapServices.xml文件到WAS的目录下。例如我的WSAD IE安装在C:\Program Files\IBM\WS\ADIE\目录下,则将两个文件复制到这个目录下。如果无法确定文件放置的具体位置,可以参考第5步。

4.准备Tuxedo应用程序文件

从sample.zip中解压home文件夹,直接放到C盘根目录下。

5.编辑文件

在C:\home\me\xug_rmi_iiop下用文本编辑器打开run.bat,根据当前计算机的实际情况编辑开头的环境变量。

EE_HOME指向WAS的安装目录,例如我安装的是WSAD IE,这个目录为C:\Program Files\IBM\WS\ADIE\runtimes\ee_v51
XUG_HOME指定XUG的安装目录
APPDIR如果上一步中解压的home文件夹没有放入指定目录下,则应使变量APPDIR指向xug_rmi_iiop文件夹。注意:同时应当修改ubbsimple文件中APPDIR和TUXCONFIG配置。

打开xug_soap_rpc文件夹中的ubbsimple文件,修改以下行:

TUXDIR="C:\bea\tuxedo8.1"指向Tuxedo的安装目录
IBMUSER LMID=simple将IBMUSER修改为当前计算机的计算机名。注意:计算机名中间不能带连接符-。
APPDIR=
TUXCONFIG=
如果上一步中解压的home文件夹没有放入指定目录下,则应修改。

6.运行例程

编辑好上述文件后,双击运行run.bat,就可以看到运行结果了。

如果控制台提示找不到配置文件SoapServices.xml,则将Sample.zip压缩包中的RMI_IIOP EIS Files文件夹下的Gateway.properties和SoapServices.xml文件复制到相应的目录下即可。如图 4 17,这台机器需要将Gateway.properties和SoapServices.xml文件复制到E:\IBM\WS\ADIE目录下。


图 4 17 无法找到配置文件
图 4 17 无法找到配置文件

注意:如果此时在run.bat时无法正常关闭Tuxedo Server,需要重新启动计算机来清除错误。

重新运行run.bat如果看到运行结果:


Send buffer is:
celsiusValue    24

Received buffer is:
celsiusToFahrenheitReturn       75.2

就证明安装和配置都正确了。





回页首


5.以EJB方式配置XUG

在本章,将介绍以EJB为分发代理配置XUG的要点。

以EJB为分发代理配置XUG时,只需要在BEA Tuxedo服务器端安装和配置XUG。本章1.25~1.32节介绍了配置的细节,1.33节讲解了例程的使用。

5.1. 准备文件

从XUG安装目录中config文件夹复制下列文件和模版到BEA Tuxedo服务器上Tuxedo应用程序的目录(即APPDIR环境变量指定的目录,以下简称%APPDIR%)。

  • SampleTuxedoRegistry.xml
  • Gateway.properties
  • passthru.xsl (可选)
  • TuxedoRegistry.xsd (可选,校验SampleTuxedoRegistry.xml)
  • EJBRegistry.xsd (可选,校验EJBServices.xml)

为了方便使用,把SampleTuxedoRegistry.xml重命名为Tuxedo服务定义文件的默认名TuxedoServices.xml,否则需要额外的配置,参考1.26,1.31节。

在%APPDIR%下新建一个EJBServices.xml文件,其具体内容参考1.30节。

5.2. 配置Gateway Tuxedo Server

首先,确保您已经正确安装配置了BEA Tuxedo。假设您已经有了一个可以正常运行的Tuxedo应用程序,接下来,我们通过修改%APPDIR%下ubbconfig文件,在这个应用程序中添加配置Gateway Tuxedo Server。

用文本编辑器打开ubbconfig文件,在其中的SERVERS段增加以下内容:


gateway		SRVGRP=GROUP1 SRVID=2 CLOPT="-A -- "

其中SRVGRP和SRVID的值根据实际情况设置。

在SERVICES段增加新的一行:


GATEWAY_SERVICE

注意:可以使用CLOPT参数中-J选项来指定JVM设置。因为Tuxedo对CLOPT的长度有限制,所以一般使用配置文件指定JVM设置,参考1.31节。下面的例子中,我们指定Gateway Tuxedo Server的配置文件名为MyGateway.properties。


		CLOPT="-A -- -J \"-DXUG.Config=MyGateway.properties\""
	

5.3. 配置环境变量

1.配置Tuxedo环境变量

为了能使Tuxedo正常运行,应当正确设置以下系统环境变量:

TUXDIR指定Tuxedo的安装目录,如" C:\bea\tuxedo8.1"
APPDIR指向Tuxedo应用(Tuxedo application)文件所在的目录, 如" C:\home\me\simpapp"
TUXCONFIG指向Tuxedo配置文件的位置,如"%APPDIR%/tuxconfig" FIELDTBLS
FIELDTBLS32指定包含FML/FML32字段表信息的文件名,如"myfml.flds"
FLDTBLDIR FLDTBLDIR32指定FIELDTBLS/ FIELDTBLS32的搜索路径,可以不在% APPDIR %下

2.配置Gateway Tuxedo Server环境变量

XUG提供了Gateway Tuxedo Server程序及其动态连接库,可以在XUG的安装目录下找到。

在Tuxedo Server机上,配置环境变量PATH,让其包含指向gateway.exe和tconnn.dll(如果使用的是Tuxedo6.5,则是tconn6n.dll)的目录。如" C:\Program Files\Prolifics\XMLink Universal Gateway\util\tux"。

注意:在实际使用时,我们发现,如果PATH路径中不含jvm.dll,Gateway.exe将无法运行。以EJB配置XUG时,需要用到IBM JDK1.4,所以需要在Websphere安装目录下找到相应的JDK路径,然后在PATH中加入其中含jvm.dll的路径,如:


C:\Program Files\ibm\ws\ADIE\runtimes\ee_v51\java\jre\bin\classic

5.4. 配置Gateway Tuxedo Server所需的JAVA环境变量

为了能使Gateway Tuxedo Server正常运行,需要在环境变量CLASSPATH中添加以下jar的位置:

JAR说明位置
Gateway.jarGateway适配器文件可在XUG的安装目录下找到
j2ee.jarJ2EE连接器结构类和JNDI服务可在IBM Websphere Application Server运行环境中搜索找到。
namingclient.jar与RMI/IIOP调用相关一些IBM JAVA类
xalan.jarXSL数据转换
mail.jarcom.sun.mail.util.*
myEJBs.jar要调用的EJB部署后的Jar文件参考1.32节

5.5. 配置Gateway Tuxedo Server的服务

Gateway Tuxedo Server要发布的企业服务都罗列在XML格式的Tuxedo服务定义文件中。Tuxedo服务定义文件默认的文件名是TuxedoServices.xml,你也可以通过JVM参数XUG.TuxedoServices定义自己的文件名,参考1.26,1.31节。下面给出一个例子:



<?xml version="1.0" encoding="utf-8"?>
<!-- Web Services to be advertised as Tuxedo services -->
<tuxedo-service-registry
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="TuxedoRegistry.xsd">
	<Service>
    	<ServiceName>ConvertC2F</ServiceName>
        <TuxedoAdvertise>ConvertC2F</TuxedoAdvertise>
        <TuxedoInputType>
        		<FML>
				<field name="celsiusValue"/>
			</FML>
        </TuxedoInputType>
        <TuxedoOutputType>
        		<FML>
        			<field name="celsiusToFahrenheitReturn"/>
        		</FML>
        </TuxedoOutputType>
	</Service>	
</tuxedo-service-registry>

这个文件中主要包含以下设置:

Service设置一个服务,在一个< tuxedo-service-registry >标签中可以设置多个服务。
ServiceName 设置参考服务名,这个名称与EJB定义文件中<service>标签中alias属性对应,参考1.30节。
TuxedoAdvertise设置通知的Tuxedo服务名,Tuxedo客户端可以直接使用这个服务名调用服务。
TuxedoInputType设置Tuxedo客户端的输入类型,可以是FML, FML32, STRING, CARRAY。也可以像例子中一样嵌套<FML>, <FML32>标签。
TuxedooutputType 设置向Tuxedo客户端的输出类型, 可以是FML, FML32, STRING, CARRAY。也可以像例子中一样嵌套<FML>, <FML32>标签。 注意:XUG使用其中<field>标签的name属性作为返回FML字段名。如果返回的XML数据中不包含name参数,则使用TuxedooutputType列表中的第一个名字或默认值return作为FML字段名。如果TuxedooutputType列表为空,则不返回数据。 当企业服务返回复杂SOAP类型时,复杂类型的元素将与多个FML字段按照name自动匹配,也可以通过数据转换定制。
FML设置FML缓冲区的字段定义。
FML32设置FML32缓冲区的字段定义。
fieldFML/FML32中的元素,其name属性指定了Tuxedo字段名。注意:当作为输入时,name名称必须与SOAP-RPC的输入参数名称匹配。当作为输出,且SOAP-RRC返回复杂类型时,这个名称须与复杂类型的元素名称匹配。

还要在这个文件中添加一个非常重要的配置属性:


java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory

另外,如果企业信息服务器不在本机,或端口号不是默认的2809,则可以添加如下的配置属性,指定IIOP连接


java.naming.provider.url=iiop://192.168.1.1:900

5.6. 配置EJB服务

当XUG以EJB方式配置时,直接与业务逻辑EJB交互,所以我们需要在EJBServices.xml中定义EJB存取,下面是一个EJBServices.xml文件的例子:



<?xml version="1.0"?>
<ejb-service-registry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xsi:noNamespaceSchemaLocation="EJBRegistry.xsd"
xmlns:xsd1="http://www.testservice.com/schemas/TestServiceRemoteI
nterface">
	<endpoint ID="ep1">
		<JNDIName>sample/bean/StockQuoteServiceHome</JNDIName>
	</endpoint>
	<service alias="QUOTE_SERVICE" IDREF="ep1">
		<method-name>getQuote</method-name>
		<method-in>
			<param name="symbol" type="Ljava.lang.String;" />
		</method-in>
		<method-out>
			<param name="return" type="Ljava.lang.Float;" />
		</method-out>
	</service>
</ejb-service-registry>

这个文件包括以下设置:

endpoint 指定要连接的SOAP endpoint。ID属性为endpoint起了一个别名,可以在后面配置服务时引用。
URL 指定SOAP endpoint的URL连接。
targetObjectURI指定SOAP endpoint的targetObjectURI。这个设置应当与WSDL文件中soap:body元素的属性namespace相对应。
service配置一个企业服务的描述。 alias属性指定了参考服务名,与Tuxedo服务定义文件中<ServiceName>标签对应,参考1.29节。
soap-action属性指定了要使用的SOAP action (在WAS中忽略soap-action属性)。
method-name指定企业服务的名字。
message-in企业服务的输入消息。
message-out企业服务的输出消息。
param指定输入输出参数。 注意:配置输入参数时,param与wsdl文件的消息(message)部分part标签的name属性相对应。

5.7. 配置Gateway Tuxedo Server的属性

Java系统属性可以配置在配置文件中,或者在JVM命令参数中。配置文件就是我们开始复制到工作目录下的Gateway.properties 以下解释一些以EJB方式配置时,在Gateway Tuxedo Server端有效的主要配置:

XUG.Config(可选)指定配置文件的配置文件名。默认值是Gateway.properties。如果要修改这个配置,必须在JVM命令参数中指定,参考1.26节。
XUG.Server(可选)指定使用的Gateway Tuxedo Server组件。默认值是com.prolifics.xug.server.tuxedo.
TuxedoServer,而且也是目前唯一支持的组件。
XUG.DeliveryAgent指定使用的发送代理(delivery agent),可选值有SOAP-RPC,RMI/IIOP或EJB,此时选择EJB。
XUG.TuxedoServices(可选)指定使用的Tuxedo服务定义文件。默认值是TuxedoServices.xml。

5.8. 配置部署后的EJB Jar文件

在配置这一步前,请确保您已经成功部署了一个包含EJB服务的EJB项目,可以在服务器上运行。

在部署好的EJB项目上点击右键,选择Export->Jar File,导出其中的Class文件到一个Jar文件中,然后在Tuxedo应用程序环境变量的CLASSPATH中增加这个Jar文件。

5.9. 以EJB方式配置的例程

下面提供一个以EJB配置XUG的例程,帮助大家快速配置XUG。在例程运行成功后,可以通过修改例程,快速开发自己的XUG应用。要运行例程,请按照以下步骤:

1.先决条件

在运行前,应当确保

  • 安装了WSAD5且可以正常运行
  • 安装了Tuxedo7以上且可以正常运行
  • 正确安装了XUG

2.在WAS上部署EJB Service

  • 在WASD中切换到J2EE视图。
  • 在Enterprise Applications文件夹上右键,选择Import->Import EAR:

图 5 1 导入EAR项目
图 5 1 导入EAR项目

在向导第一步中浏览选择Sample文件夹下的JavaEJBSampleEAR.ear文件,在第二步中选中Perserve project name, classpaths, and meta-data included in the EAR。点Finish完成导入。


图 5 2 导入EAR项目
图 5 2 导入EAR项目

这样导入的同时导入了类路径等信息,如果与您机器上的路径不相符,则需要在项目属性的Java构建路径中修改。


图 5 3 导入EAR后可能出错
图 5 3 导入EAR后可能出错

将项目添加到WAS测试环境中,然后启动WAS。如果缺少xalan.jar,xerces.jar可以在sample\home\me\xug_soap_rpc\lib下找到。

3.准备Tuxedo应用程序文件

从sample.zip中解压home文件夹,直接放到C盘根目录下。

4.编辑文件

在C:\home\me\xug_ejb下用文本编辑器打开run.bat,根据当前计算机的实际情况编辑开头的环境变量

EE_HOME指向WAS的安装目录,例如我安装的是WSAD IE,这个目录为C:\Program Files\IBM\WS\ADIE\runtimes\ee_v51
XUG_HOME指定XUG的安装目录
APPDIR如果上一步中解压的home文件夹没有放入指定目录下,则应使变量APPDIR指向xug_ejb文件夹。注意:同时应当修改ubbsimple文件中APPDIR和TUXCONFIG配置。

打开xug_soap_rpc文件夹中的ubbsimple文件,修改以下行:

TUXDIR="C:\bea\tuxedo8.1"指向Tuxedo的安装目录
IBMUSER LMID=simple将IBMUSER修改为当前计算机的计算机名。注意:计算机名中间不能带连接符-。
APPDIR=
TUXCONFIG=
如果上一步中解压的home文件夹没有放入指定目录下,则应修改。

5.运行例程

编辑好上述文件后,双击运行run.bat,就可以看到运行结果了。

如果看到运行结果:


Send buffer is:
symbol  IBM

Received buffer is:
return  100

就证明安装和配置都正确了。



作者简介

曹世锋是 Lab Based Services 团队的一名成员,在过去的几年里,一直专著于基于 IBM 产品的 EAI/SOA 项目实施,是一名资深的 Solution Expert。您可以通过caoshif@cn.ibm.com 和他联系。


张羽是 Lab Based Services 团队的一名成员,在过去的几年里,一直专著于基于 IBM 产品的 EAI/SOA 项目实施,是一名资深的 Solution Expert。您可以通过alfzhang@cn.ibm.com和他联系。


兰建忠在过去的一段时间里一直专注于基于 WebSphere 产品的适配器开发,是一名 Solution Expert 。您可以通过lanjz@cn.ibm.com和他联系。


拱旭升在过去的一段时间里一直专注于基于 WebSphere 产品的适配器开发,是一名 Solution Expert 。您可以通过gongxsh00@cn.ibm.com和他联系。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款