JBuilder4入門
1. 前言
經過對JBuilder 4 Enterprise 版的幾天使用,逐步了解了JBuilder 4一些讓人向往的特性,如功能豐富的向導,對EJB/Servlet/JSP的直接調試能力。深深的為其震撼,現將一些收獲整理,希望能以此提高我們開發的速度!
2. EJB
開發環境的配置
要進行EJB的開發,需要有JBuilder4 Enterprise、Borland Application Server 4.x.
安裝
先安裝JBuilder 4,假設你要安裝到
c:JBuilder40 (default).
安裝 JBuilder Foundations
安裝 JBuilder 4 Enterprise.
要安裝BAS(IAS)4.x、請先下載JDK1.2.2以上版本,j2eesdk1.2.1以上版本。
安裝 J2eesdk 1.2.1 to c:j2eesdk1.2.2 (default).
安裝 Borland Application Server 4.5.
這里假設你將BAS安裝到c:Bas45 (not default),osagent使用缺省的端口 (14000)
Bas與JBuilder4的集成
將JBuilder Open Tool bas45.jar 從 C:Bas45consolejbuilderjb40 拷貝到C:JBUILDER40libext 目錄下,重啟JBuilder.
1. 選擇Tools | Enterprise Setup 。
2. 在 Application Server 頁中選擇BAS 4.5,在BAS installation directory點中選擇輸入 C:BAS45

3. 點OK。系統將提示重啟JBuilder,請確認。
4. 選擇Tools | Enterprise Setup
5. 選擇Corba頁,在Path for ORB Tools中輸入C:/Bas45/bin
6. 點Library for projects下的…按鈕,選擇Bas 4.5 ,請參考下圖。

實例操作步驟
下面將在Jbuilder里創建一個簡單的EJB,請對照下面步驟執行
第一步,創建工程:
選擇 File | New Project…
將工程目錄設為 quickstart.
將根目錄設為 c:/project.
按 Finish 按鈕.

第二步,創建EJB Group。
EJB Group將打包成Jar文件時自動加入里面的包內的EJB。:
選擇 File | New… | Enterprise tab | Empty EJB Group.
設置組的名稱為quickstart,JBuilder將在此工程的目錄里生成一個quickstart.jar文件。.
點 OK.

第三步、建立Bean
接著使用向導建立Bean:
File | New… | Enterprise tab | Enterprise JavaBean.
點 Next to將這個bean加入剛剛創建的EJB組。
將類名高為TellerBean 點Next.

不要改變接口的名稱,但是要將bean home改為TellerHome。

現在,可以看到工程中有三個類. TellerHome和Teller 是EJB容器需要實現的。
TellerBean是我們要加入的商業邏輯的類,雙擊TellerBean在其中加入以下代碼:
public int getTellerNo() { return 1; } Save All your work and Make . |
第四步,發布方法
現在我們需要將方法暴露給容器。雙擊TellerBean,我們可以在Bean這一頁中看到一個叫Methods的頁。步驟:
雙擊TellerBean.java。
選中 Bean 頁,再選Methods 頁。
選中 getTellerNo 方法的復選框(Save All,這時如果你打開Teller.java,你可以看到其中聲明了一個新的方法的。)

現在我們寫完了EJB的代碼。
第五步,配置
現在我們要完成及檢查配置描述(Deployment Descriptor)。配置描述是EJB的重要部分,它將發布配置與發布代碼分離開,以我們可以在不改變源代碼的情況以分解與調配一個應用。
JBuilder已經為我們生成了一部分配置描述,現在我們來作些調整:
雙擊Double-click quickstart.ejbgroup to view it.
在左下的結構窗格中展開TellerBean ,點 Container Transactions.

點 Add 為我們的方法加入一個事務屬性為 ‘Required’的容器事務,點Verify




第六步,寫客戶端測試代碼。
現在我們完成了服務端的編寫,現在我們要寫個Java客戶端來調用EJB內的getTellerNo。使用向導來創建一個EJB Test Client。
File | New… | Enterprise tab | EJB Test Client
將類名認為 Client
只選中 Generate main function

點OK.
在Client類中加入以下代碼。注意是在第一個try語句塊的最后。
Teller teller = tellerHome.create(); int t = teller.getTellerNo(); System.out.println(“Using teller No: “ + t); |
第七步,編譯
最后生成RMI/IIOP的存根(stub)來調用遠程方法。
右擊TellerHome.java 選中 Properties.
在 Build | VisiBroker 頁中, 選中 Generate IIOP.
點 OK.
Save All


現在我們已經完成了開發。

第八步,運行
現在我們將在JBuilder4內運行容器來執行這個bean,選運行VisiBroker Smart Agent:
Tools | VisiBroker Smart Agent
設置運行容器的參數
Run | Configurations…
編輯<default>的設置.
選中 EJB 頁.

點 OK, OK.
運行這個container 等待它初始化
右擊Client.java,選中Run ,運行客戶端。
在消息窗口可以看到這樣的輸出信息。
C:JBuilder40jdk1.3injavaw –class… Using teller No: 1
.
如何調試
1. 設定斷點
在TellerBean中找到這一行
return 1;
右擊這一行,選擇Toggle Breakpoint(或按快捷鍵F5),這一行將會加亮成紅色。
2. 裝入容器
點

Borland Application Server Customer ........ done Initializing JDB............. done Initializing EJBs............. done Container [ejbcontainer] is ready EJB Container Statistics ======================== Time Fri Jun 08 21:51:22 CST 2001 Memory (used) 1304 Kb (max 1304 Kb) Memory (total) 2292 Kb (max 2292 Kb) Memory (free) 43.0% ------------------------ Home TellerHome Total in memory 0 Total in use 0 ======================== |
則可證明Container運行成功。
3. 運行客戶端
用右鍵點擊Client.java,選中Run,在調用遠程方法時,將跟蹤到EJB的內部,想想這個,真是爽呀!JBuilder4開發EJB,真的歷害。

3. JSP
開發環境的配置
JBuilder提供了一個JSP開發的完整系統,包括一個用來創建JSP文件的JSP向導,及對JSP標記的CodeInsight(加亮顯示,自動完成)技術,集成的Tomcat引擎(支Java Servlet 2.2 及JSP 1.1 ),可以使用戶在集成環境下調試JSP代碼。
系統無需特別的設置,便可以用于開發JSP。
實例操作步驟
1. 生成一個JSP工程
選擇 File|Close Project關閉所有的打開的工程。
選擇 File|New。
選中Object Gallery的New頁中的 JavaServer Page. 這時將出現工程向導。
把Project Name改成SampleJSP.。
單擊Finish按鈕接受其缺省的配置。
這時工程就創建了,系統將彈出JSP向導。
在JSP向導的第一步中輸入JspWithCountingBean,單擊Finish。

JSP創建成功。
工程的主類是生成的JSP文件,下面兩個文件將加入工程中:
JspWithCountingBean.jsp – 一個包含JSP標記的HTML文件。
JspWithCountingBeanBean.java – 一個JSP文件調用的Bean。
雙擊在工程窗格中的JspWithCountingBeanBean.java,在源程序中增加以下黑體部分代碼。
package samplejsp; public class JspWithCountingBeanBean { /**initialize variable here*/ private int myCount=0; private String sample = "Start value"; /**Access sample property*/ public String getSample() { return sample; } /**Access sample property*/ public void setSample(String newValue) { if (newValue!=null) { sample = newValue; } } /**New method for counting number of hits*/ public int count() { return ++myCount; } } |
雙擊在工程窗格中的JspWithCountingBean.jsp,在代嗎中增加以下黑體部分代碼。
<HTML> <HEAD> <jsp:useBean id="JspWithCountingBeanId" scope="session" class="samplejsp.JspWithCountingBeanBean" /> <jsp:setProperty name="JspWithCountingBeanId" property="*" /> <TITLE> JspWithCountingBean </TITLE> </HEAD> <BODY> <H1> JBuilder Generated JSP </H1> <FORM method="post"> <BR>Enter new value: <INPUT NAME="sample"><BR> <BR><BR> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Submit"> <INPUT TYPE="RESET" VALUE="Reset"> <BR> Value of Bean property is: <jsp:getProperty name="JspWithCountingBeanId" property="sample" /> <P>This page has been visited :<%= JspWithCountingBeanId.count() %> times.<BR> </FORM> </BODY> </HTML> |
2. 運行JSP
要運行JSP
右擊JSP文件
選擇 Web Run.
如果沒有錯誤,Tomcat將啟動,在內容面板中將出現Web View與Web View Source 頁,Web View相當于一個瀏覽器,返回JSP運行的結果。如果運行成功將可以看到以下內容:
JSP in Web View

可以點擊Web View 頁中的Submit按鈕,可以看到Page Counter在增加。Tomcat所有的輸出信息/日志都顯示在Message窗格中。
3. 調試JSP
要調試JSP,先設置一個斷點,具體步驟如下:
在JspWithCountingBean.js中的源文件窗格中,找到下面這一行:
<P>This page has been visited :<%= JspWithCountingBeanId.count() %> times.<BR>.
點右鍵,在彈出菜單中選擇Toggle Breakpoint。
右擊JSP文件,選擇Web Debug即可調試。

如何調試
如上節所提,上圖就是調試的界面。
4. Servlet
開發環境的配置
無需特別配置,JBuilder4已經為我們配好了開發環境。
例操作步驟
1. 生成一個Servlet
在JBuilder內創建一個新工程
選擇 File|Close 關閉其他工程
選擇 File|New, 在Object Gallery.雙擊Servlet圖標
這時將出現工程向導,將目錄、工程名設為SampleServlet。
點Finish.
這時出現Servlet向導
創建一個新的servlet:
類名設為firstServlet。
選中doPost()方法(通常doGet()方法已被缺省選中了 )。
點Next.
讓SHTML文件保持缺省設置,點Next。
點Add按鈕加入一個Servlet Parameter,這樣將在SHTML文件內生成一些這些參數的引用代碼。請對應下表將參數設為下表的值:
Name* | UserName |
Type* | String |
Desc | Name of User |
Variable* | userName |
Default | Hey You |
點Finish,這時工程內將有一個firstServlet.java文件和一個firstServlet.shtml 文件。Servlet庫也將自動載入工程的Library。
在firstServlet.java內加入以下代碼,新再入的代碼也被標為黑體。
package firstservlet; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class firstServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html"; /**Initialize global variables*/ int connections; public void init(ServletConfig config) throws ServletException { super.init(config); connections=0; } /**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("<font color="green">"); out.println("<p>The servlet has received a GET. This is the reply.</p>"); out.println("</font>"); } /**Process the HTTP Post request*/ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { file://Name of User String userName = "Hey you"; try { userName = request.getParameter("UserName"); } catch(Exception e) { e.printStackTrace(); } response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>firstServlet </title></head>"); out.println("<body>"); out.println("<p>The servlet has received a POST. This is the reply.</p>"); out.println("<p>Thanks for visiting, "); out.println(request.getParameter("UserName")); out.println("<P>"); out.println("Hello World - my first Java Servlets program!"); out.println("<P>You are visitor number "); connections++; out.println(Integer.toString(connections)); out.println("</body></html>"); } } |
2. 編譯
要編譯serlet,先到設置運行時屬性。
單擊 Project|Project Properties。選擇Run頁,再選JSP/Servlet 頁。
單擊Set按鈕,瀏覽并選中創建的SHTML文件。
改變Web Server的屬性,端口是Web Server運行時使用的端口,缺省的端口是8080,如果8080被占用的,JBuilder會自動選擇一個空閑的端口。
點OK。
現在可以編譯了
右擊firstServlet.shtml.
點Make。
3. 運行
與運行JSP類似,右擊firstServlet.shtml,選中Web Run.
4. 調試
與運行JSP類似,右擊firstServlet.shtml,選中Web Debug.
如何調試
已作說明。