用如下批處理,可以編譯Session Bean:
cd C:J2EE
set J2EE_HOME=C:J2EEj2sdkee1.2.1
set CPATH=.;%J2EE_HOME%libj2ee.jar
javac -d . -classpath %CPATH% Beans/CalcBean.java
Beans/CalcHome.java Beans/Calc.java
其實,在前面設置了Classpath的路徑之后,只要在C:J2EE目錄下面:
javac Beans/CalcBean.java Beans/CalcHome.java Beans/Calc.java直接執行就可以。下面的批處理也是同樣的。
用如下批處理編譯Servlet:
cd C:J2EEClientCode
set J2EE_HOME=C:J2EEj2sdkee1.2
set CPATH=.;%J2EE_HOME%libj2ee.jar;
C:J2EE
javac -d . -classpath %CPATH% BonusServlet.java
編譯Servlet的時候,因為用到了Session Bean的類,所以必須還要在Classpath中把C:J2EE的加進去。
這樣就把Session Bean和Servlet編譯好了。
九、啟動J2EE的應用服務器。
我們需要啟動J2EE的應用服務器來配置和運行這個例子。啟動的命令在J2EE的安裝目錄C:J2EEj2sdkee1.2inj2ee.bat下面。命令行如下:
j2ee verbose
參數-verbose是表示在啟動服務器的時候,將啟動信息輸出到屏幕上。當你看見輸出
J2EE server startup complete
時,就可以啟動配置工具了。現在,我們暫時忽略其它的輸出信息。
十、啟動配置工具:
為了組裝和配置J2EE的應用程序,必須啟動deploytool。我們前面已經配置好了路徑信息,只要敲入如下命令就可以了:
deploytool
如果在啟動的時候遇到了內存訪問錯誤,試著增加一個環境變量:JAVA_FONTS。將它設置為系統的fonts目錄。象是:C:WINNTfonts之類的。另外,如果遇到了NullPointerException錯誤,可能是因為你在根目錄下執行deloytool。在別的目錄下執行deploytool一般不會遇到這樣的錯誤。
十一、配置工具:
配置工具有四個窗口。Local Application窗口顯示了J2EE的應用程序和它們的組件。Inspecting窗口所選擇的J2EE應用程序或者組件的信息。Servers窗口告訴你應用程序正運行在本地主機上。Server Application窗口告訴我們安裝了那些應用程序。在安裝J2EE應用程序的過程中。我們將會看到Local Application窗口、Inspecting窗口和Server Application窗口顯示相應的 ⅰ?/p>
在Server Application窗口的右邊,有一個uninstall按紐。可以卸掉J2EE應用程序。如果是改變或者重新配置應用程序,并不需要停止或者重新啟動應用服務器。
十二、組裝J2EE應用程序:
步驟如下:創建一個新的J2EE應用程序(BonusApp.ear)、創建一個新的Enterprise Bean(CalcBean.jar)、創建一個新的Web組件(Bonus.war)、為Enterprise Bean指定一個JNDI名字(calcs)、指定J2EE應用程序的根上下文(BonusRoot)。
創建一個J2EE應用程序:
J2EE組件是組裝到J2EE應用程序文件包(*.ear)里面的。
在File菜單中選擇New Application:
在彈出的New Application 對話框中,將New Applicaion Name的名字起為:BonusApp.ear。然后在Application Display Name域上點鼠標右鍵,將會顯示BonusApp。然后單擊Browse按紐,將新的ear文件存放在你想要存放的目錄下。
在New Application file chooser中:
定位到你存放應用程序EAR文件的目錄,在這個例子中,目錄是C:J2EE。在File Name框中填入:BonusApp.ear。單擊New Application,再單擊OK。
現在,BonusApp顯示在Local Application列表框中。Inspecting窗口中顯示了名字、位置和BonusApp包含的內容信息。在內容窗口中顯示meta信息描述了Jar文件和J2EE應用程序。并且提供了應用程序的運行時的信息。
創建一個Session Bean:
在File菜單中選擇New Enterprise Bean。顯示了向導的介紹,大概瀏覽一下。然后單擊Next。彈出EJB JAR對話框。按照下面寫的輸入:
Enterprise Bean will go in: BonusApp
Display name: CalcJar
Description: 一個計算獎金的Session Bean,里面有一個方法。
單擊Add,這里面有兩個Add按鈕,我們單擊的是右下角的那個。在Contents Window旁邊。
Add Files to .Jar對話框:進入到J2EE的目錄。可以直接敲路徑名或者通過傍邊的Browse得到。到了J2EE目錄之后。雙擊Beans目錄顯示里面的文件。依次把Calc.class、CalcHome.class、CalcBean.class 都Add進去。
單擊OK。現在就返回到了EJB JAR對話框。Beans/Calc.class、Beans/CalcBean.class、Beans/CalcHome.class應該在Contents窗口中顯示出來。單擊Next。
General對話框:下面相應的框應該如下選擇。
Classname: Bean.CalcBean
Home interface: Beans.CalcHome
Remote interface: Beans.Calc
Bean type: Session and Stateless
指定顯示的名字(就是當Jar文件加到Local Application窗口中的BonusApp中之后顯示的名字)。并且提供JAR文件內容的描述。
Display name: CalcBean
Description:這個文件包含了CalcBean Session Bean。單擊Next。
環境入口:因為我們這個例子沒有使用到環境入口屬性。直接單擊Finish。
創建Web組件:
Web組件(Servlet和JSP技術)被捆綁到一個WEB壓縮包(WAR)中。
在File菜單中選擇New Web Component。彈出New Web Component的向導。大概瀏覽一下,單擊Next。
WAR File General Properties 對話框。提供如下信息:
WAR file: BonusApp
Display name: BonusWar
Description: 本WAR文件包含了一個Servlet和一個html頁面。
單擊Add:
Add Contents to WAR對話框:
轉到ClientCode目錄。
選擇bonus.html文件。Add進去。注意在列表框中文件前面不要有它的目錄的前綴。單擊Add。
然后把BonusServlet.class也加進去。
有時候明明把Servlet加進去了,系統死活就是不認。這是,刪除Servlet,重新假如可能就好了。我在做這一步的時候加了好多次,每次做同樣的操作。不知道為什么,J2EE竟然出這樣弱的BUG。另外,要先加class文件,然后再家html文件。順序也有關系。單擊Finish。
回到WAR File General Properties對話框。單擊Next。
Choose Component Type對話框:
選擇Servlet,然后單擊Next。
Component General Properties對話框:
確定在ServletClass 中選擇了BonusServlet。
敲入顯示的名字(BonusServlet)以及其描述信息。
因為本例子我們只是用了一個Servelt,所以可以忽略startup and load sequence的設置。
Component Initialization Parameters對話框:沒有使用參數,單擊Next。
Component Alias對話框:
單擊Add.
敲入BonusAlias并回車。這個別名和在html頁面中表單的Action域中指定的是一樣的。
單擊Finish。
在這里面,將會看到WAR文件包含了一個XML文件,里面有Web應用程序的結構和屬性信息。還有bonus.html文件和BonusServlet類文件。WAR文件安排所有的Servlet類都在Web-INF/classes目錄下面。然而,當WAR文件配置好之后,BonusServlet類被放到了上下文的根目錄public_html下。這樣的放置符合Servlet 2.2的Web服務規范。
指定JNDI名字和根上下文:
在配置BonusApp應用程序和它的組件之前,必須要指定用來查找CalcBean Session Bean的JNDI名字BonusServlet。還要指定上下文的根目錄,配置器將把Web組件放到這個目錄下。
JNDI名字:
在Local Application窗口中選擇BonusApp文件。在Inspecting窗口中選擇JNDI頁。在最右邊的JNDI name下面敲入calcs。這個名字應該和Servlet中lookup()方法中的名字一樣。
上下文根目錄:
在Inspecting目錄中,選擇Context頁。在左邊一列是BonusWar。在右邊一列敲入BonusRoot。配置好之后的文件結構如下:
別名:
在Local Application窗口中,單擊BonusWar,然后單擊BonusServlet。然后在Inspecting窗口中選擇Alias頁。如果沒有BonusAlias,就填入BonusAlias。
十三、驗證并配置J2EE應用程序:
在配置應用程序之前,最好先驗證一下是否有錯誤。驗證程序將會收集所有的錯誤信息,例如編譯時找不到Session Bean中相匹配的方法。
驗證:在Local Application中選擇BonusApp,單擊Tool菜單中的Verifier。單擊OK,應該出現的是沒有錯誤。然后關閉驗證窗口。注意:J2EE1.2的版本可能會出現一個test app.WebURI錯誤。這個表示配置工具在創建WAR文件的時候沒有把.war擴展名加進去。這是J2EE的一個小BUG。沒有關系,不管它就行了。
配置:在Tool菜單中,選擇Deploy Application。彈出Deploy BonusApp對話框。要注意保證Target Server selection要么是localhost,要么是運行了J2EE服務器的主機。另外,注意必要選擇Return Client Jar box。
單擊Next,確定JNDI名字顯示為calcs。否則自己填如。
單擊Next,確定Context Root name顯示為BonusRoot,否則自己填入。
單擊Next,在單擊Finish。將彈出一個對話框顯示配置操作的狀態。
十四、運行J2EE應用程序:
Web服務器默認端口8000運行。可以在C:J2EEj2sdkee1.2config目錄下的web.properties文件中改。
在瀏覽器中地址欄中輸入:http://localhost:8000/BonusRoot/bonus.html
然后輸入社會保險號和乘數。單擊Submit按鈕。瀏覽器將返回類似如下的葉面:
Bonus Calculation
Soc Sec: 777777777
Multiplier: 25
Bonus Amount 2500.0