5.部署
部署是將J2EE組件(EJB,JSP,Servlet等)正確安裝并配置到J2EE服務(wù)器中,然后,客戶端程序才能夠訪問它。EJB運(yùn)行在EJB容器中,因此,必須把我們編寫的Bean部署到服務(wù)器上。
首先,確保J2EE服務(wù)器正在運(yùn)行,請參考第3步:啟動和停止J2EE服務(wù)器。
然后,再打開一個(gè)新的命令行窗口,輸入:
deploytool
稍等片刻,出現(xiàn)部署窗口:
首先,我們需要新建一個(gè)服務(wù)器端應(yīng)用程序:
選擇File > New > Application…:

輸入希望存放ear文件的完整路徑和應(yīng)用程序的名稱,當(dāng)然,這里我們的這個(gè)C:\helloapp\ear文件并不存在,部署工具稍后會創(chuàng)建它。
現(xiàn)在,Deployment Tool已經(jīng)創(chuàng)建了一個(gè)hello的Application,但是還沒有任何可以部署的組件:

下一步,我們將要添加前面我們編寫的第一個(gè)EJB:
選擇File > New > Enterprise Bean…,然后,按照向?qū)ч_始部署EJB:

在Contents欄中,需要添加所有必須的class文件,點(diǎn)擊“Edit…”,添加我們編譯好的3個(gè)class文件:

然后,向?qū)崾具x擇EJB類型。EJB 2共有3種Bean:Session Bean,Entity Bean和Message-Driven Bean,我們編寫的是Session Bean,并且選擇Stateless,表示該Session Bean是無狀態(tài)會話Bean,所有客戶端都可以共享一個(gè)Bean。如果選擇Stateful,則每個(gè)客戶端會擁有不同的Bean,類似于web應(yīng)用程序的session機(jī)制。
在下面的下拉列表框中,選擇對應(yīng)的class。注意我們沒有編寫Local Home和Local Interface,因此讓它們保持為空。然后輸入Enterprise Bean Name:HelloBean。
在下面的下拉列表框中,選擇對應(yīng)的class。注意我們沒有編寫Local Home和Local Interface,因此讓它們保持為空。然后輸入Enterprise Bean Name:HelloBean。

剩下的可以直接使用默認(rèn)值,一路Next即可。完成后,可以看到,主窗口多了一個(gè)Ejb1,選中它,我們還需要在JNDI Names一欄填入ejb/Hello,客戶端將根據(jù)JNDI Name來查找我們編寫的Bean:
選擇File > Save,保存我們創(chuàng)建的Application。接下來,我們將把這個(gè)Application部署到服務(wù)器上。
選擇Tools > Deploy,出現(xiàn)Deploy向?qū)В?/P>

對話框提示我們將要部署的應(yīng)用程序是hello,目標(biāo)服務(wù)器是localhost,然后,一定要選中Return Client Jar,因?yàn)橐獜目蛻舳嗽L問部署在J2EE SDK服務(wù)器上的應(yīng)用,必須要有這個(gè)Jar包。如果使用其他服務(wù)器,也需要相應(yīng)的Jar包,如JBoss客戶端需要jbossall-client.jar。這里,我們選擇好存放Client Jar的目錄,然后Next即可。
最后,J2EE服務(wù)器開始編譯并部署我們的Hello Bean,可以看到兩個(gè)進(jìn)度條:

當(dāng)進(jìn)度條填滿時(shí),表示部署成功!可以在j2ee服務(wù)器的控制臺窗口上看到如下輸出:
Compiling C:\j2sdkee1.3.1\repository\cn1d6xuc\gnrtrTMP\hello\HelloBean_RemoteHom
eImpl.java ....
Compiling C:\j2sdkee1.3.1\repository\cn1d6xuc\gnrtrTMP\hello\HelloBean_EJBObject
Impl.java ....
rmic HelloBean_RemoteHomeImpl...
rmic HelloBean_EJBObjectImpl...
Application hello deployed.
整個(gè)部署是在窗口模式下進(jìn)行的,好處是不用編寫繁瑣的xml配置文件。在實(shí)際的開發(fā)過程中,如果每當(dāng)修改代碼都這樣部署一遍是非常低效的,因此應(yīng)當(dāng)使用ant實(shí)現(xiàn)自動編譯、部署并測試。
待續(xù)...