作者:Junsan Jin
日期:2005-3-30
版本:1.0
信箱:[email protected] ; [email protected]
聲明:本人保留本文的所有權利。
第四部分:測試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的一些理論,更好的熟悉我們所用的工具。
成文倉促,難免有錯誤疏漏之處,歡迎指正。