作者:Junsan Jin
日期:2005-3-30
版本:1.0
信箱:junsan21@126.com ; junnef21@sohu.com
声明:本人保留本文的所有权利。
第四部分:测试Session bean
在前面的三个部分已经完整地讲述了一个Session Bean的建立过程。下面来建立测试工程。
添加测试类:
在右边的树型菜单中选中com.inspiresky.trader右键 〉new 〉package,在对话框的输入框最后添加user,新建com.inspiresky.trader.user包。
选中com.inspiresky.trader.user右键 〉new 〉class,创建UserInfo.java类,代码如下。
----------------------------------
UserInfo.java
----------------------------------
package com.inspiresky.trader.user;
import javax.naming.InitialContext;
import trader.UserInfoLocalHome;
import trader.UserInfoLocal;
import javax.naming.NamingException;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import java.util.HashMap;
import java.util.Date;
/**
*
Title:
*
*
Description:
*
*
Copyright: Copyright (c) 2005
*
*
Company:
*
* @author not attributable
* @version 1.0
*/
public class UserInfo {
public UserInfo() {
}
public HashMap getUserInfo(){
HashMap map = new HashMap();
try {
UserInfoLocal local = (UserInfoLocal) findEjb();
map = local.showUserInfo();
} catch (CreateException ex) {
System.out.println("Error 1");
} catch (RemoteException ex) {
System.out.println("Error 2");
} catch (NamingException ex) {
System.out.println("Error 3");
}
return map;
}
private Object findEjb() throws NamingException, RemoteException,
CreateException {
javax.naming.Context context = new javax.naming.InitialContext();
Object obj = context.lookup("UserInfoLocal");
UserInfoLocalHome home = (UserInfoLocalHome)javax.rmi.PortableRemoteObject.narrow(obj,
UserInfoLocalHome.class);
UserInfoLocal local = (UserInfoLocal)home.create("Jak","12",new Date().toString());
return local;
}
}
添加客户类:
同样的方法在同一个包中创建类Test.java,代码如下。
---------------------------------
Test.java
-----------------------------------
package com.inspiresky.trader.user;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import com.inspiresky.trader.user.UserInfo;
public class Test extends HttpServlet {
private static final String CONTENT_TYPE = "text/HTML; charset=GBK";
private HashMap map;
//Initialize global variables
public void init() throws ServletException {
UserInfo user = new UserInfo();
map = user.getUserInfo();
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("");
out.println("
out.println("
");out.println(map.toString());
out.println("");
out.println("");
out.close();
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
//Process the HTTP Put request
public void doPut(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
//Process the HTTP Delete request
public void doDelete(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
}
//Clean up resources
public void destroy() {
}
}
修改web.XML:
在第二部分我们曾修改过web.XML,同样的方法,我们接着添加如下的部分:
修改后的web.XML文件的全部内容为:
----------------------------------------
web.XML
----------------------------------------
创建J2EE应用程序部属包:
前面已经完成了工程的所有的开发工作,为了部署的方便,我们现在来创建一个应用程序的部署包。
选择菜单:new 〉enterprise 〉Application Module(EAR)〉 OK 〉 Create empty application module 〉 Next 〉 输入名称 ETrader 〉 Next 〉选择Trader 〉Next 〉 选择WebTrader 〉Finish。
编译工程:
在树型菜单中右键点击ETader 〉Rebuilder。没有错误提示则编译成功。
启动JBoss:
运行D:\jboss-4.0.2RC1\bin\run.bat,启动JBoss。因为我们在path中设置了路径,所以也可以直接在命令行下运行run命令。
部署应用程序:
在树型菜单中右键点击ETader 〉deploy option for “ETrader.ear” 〉 deploy。
下面的两个命令分别是重新部署和卸载应用时使用。
运行程序:
打开IE浏览器,在地址栏中输入
http://localhost:8080/WebTrader/test
此时,会显示
{userName=Jak, loginTime=Wed Mar 30 11:26:18 CST 2005, userAge=12}
表明我们的程序已经正常运行了。
OK,到此一个简单的Session Bean应用就开发完成了。这里理论的东西较少,只是希望能用例子给大家一些启示,能够更好的理解和应用我们所看到的一些关于J2EE的一些理论,更好的熟悉我们所用的工具。
成文仓促,难免有错误疏漏之处,欢迎指正。

