Tuxedo与Weblogic互连指南(3)--测试

Weblogic调用Tuxedo




1、编写测试程序,使用web项目,引入必要jar,编写index.jsp调用Tuxedo服务,部署到Weblogic中

<%@ page language="java" pageEncoding="utf-8"%>
<%@ page import="weblogic.wtc.jatmi.*,weblogic.wtc.gwt.*, javax.naming.*" %>
<%
<span style="white-space:pre">	</span>try{
	    //1、初始化环境
	    Context ctx = new InitialContext();
	    //2、jndi查找tuxedo连接
	    TuxedoConnectionFactory tuxedoFactory = 
	    	(TuxedoConnectionFactory) ctx.lookup("tuxedo.services.TuxedoConnection");
	    //3、创建连接
	    TuxedoConnection tuxedoConn = tuxedoFactory.getTuxedoConnection();
	    //4、创建传入参数
	    String inStr = "helloworld";
	    TypedString xdata = new TypedString(inStr);
	    //5、调用TOUPPER
	    Reply reply = tuxedoConn.tpcall("TOUPPER", xdata, 0);
	    //6、获取返回
	    xdata = (TypedString)reply .getReplyBuffer();
	    out.println("调用成功返回:"+xdata.toString());
	   	//7、释放连接
	    tuxedoConn.tpterm();
	} catch(Exception e) {
		out.print(e.getMessage());
	}
%>


         示例项目在附件中已提供,里面已包含相关jar包,需要注意weblogic.jar的版本问题。Weblogic11g和Weblogic10g中自带的weblogic.jar缺少相关类,附件中使用的是weblogic8的包。


2. 测试Weblogic调用Tuxedo



         index.jsp中传入小写hellowold,调用Tuxedo的TOUPPER方法返回大写的HELLOWORLD。

首次调用时Weblogic将创建于Tuxedo的连接,在simpapp文件夹下的ULOG日志中会输出115139.HONGHU!GWTDOMAIN.2652.2024.0:LIBGWT_CAT:1128: INFO: Connection accepted from domain (domainid=<TDOM2>)


Tuxedo调用Weblogic

1. 编写EJB应用,附件已经提供

ejb-jar.xml

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  	http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd" version="2.1">
	<enterprise-beans>
		<session>
    		<ejb-name>TOLOWER</ejb-name>
      		<home>weblogic.wtc.jatmi.TuxedoServiceHome</home>
      		<remote>weblogic.wtc.jatmi.TuxedoService</remote>
      		<ejb-class>hello.ToLowerBean</ejb-class>
      		<session-type>Stateless</session-type>
      		<transaction-type>Container</transaction-type>
    	</session>
	</enterprise-beans>
</ejb-jar>
weblogic-ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-ejb-jar xmlns="http://www.bea.com/ns/weblogic/90" 
	xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 
	http://www.bea.com/ns/weblogic/90/weblogic-ejb-jar.xsd">
	<weblogic-enterprise-bean>
		<ejb-name>TOLOWER</ejb-name>
    	<stateless-session-descriptor/>
    	<jndi-name>tuxedo.services.TOLOWERHome</jndi-name>
  	</weblogic-enterprise-bean>
</weblogic-ejb-jar>


1.ejb-jar.xml的home和remote节点内容为固定写法

2.weblogic-ejb-jar.xml的jndi-name节点内容与WTC【已导出】的”EJB名称“一致


EJB实现代码如下
package hello;

import javax.ejb.SessionBean;
import weblogic.ejb.GenericSessionBean;
import weblogic.ejbgen.RemoteMethod;
import weblogic.wtc.jatmi.Reply;
import weblogic.wtc.jatmi.TPServiceInformation;
import weblogic.wtc.jatmi.TypedString;

public class ToLowerBean extends GenericSessionBean implements SessionBean {
	
	private static final long serialVersionUID = 1L;

	public void ejbCreate() {
		System.out.println("Create EJB");
	}

	@RemoteMethod()
	public Reply service(TPServiceInformation inData) throws Exception {
		System.out.println("Call TOLOWER");
		//1、获取传入的数据,转型要根据调用时传入的类型
		TypedString data = (TypedString) inData.getServiceData();
		//2、获取具体字段值,
		//需要注意TypedFML32的取值方法Fget的第一个参数要与调用时定义的一致
		System.out.println("InData:"+data.toString());
		//3、创建返回数据
		TypedString result = new TypedString(data.toString().toString().toLowerCase());
		inData.setReplyBuffer(result);
		return (inData);
	}
}

如果使用FML32格式,会比String格式复杂一些,在EJB中FML32的取值赋值要根据调用时指定指针位置。


2.  部署EJB项目,如图


3. 调用Tuxedo的TOLOWER服务,转发给Weblogic的WTC服务,最后交由EJB服务完成大写字母转小写的功能,修改simpapp目录中的simpcl.c文件,将里面的TOUPPER改为TOLOWER,然后重新编译,输入simpcl  HELLOWORLD命令,返回小写helloworld,如图


Weblogic控制台中输出调试信息


结束

       至此Weblogic调用Tuxedo的TOUPPER方法和Tuxedo调用Weblogic的TOLOWER方法都已配置完成,祝大家”码到成功“!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值