您的位置:首页 > 其它

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

2014-11-16 16:53 281 查看

Weblogic调用Tuxedo

Weblogic调用Tuxedo示例程序

WTC的EJB示例程序TOLOWER

Tuxedo Simpapp示例

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方法都已配置完成,祝大家”码到成功“!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Tuxedo WTC配置 weblogic