7.在JSP/Servlet中調(diào)用EJB
在JSP/Servlet中調(diào)用EJB的代碼和客戶端是一樣的,不同的是,調(diào)用代碼也運(yùn)行在服務(wù)器端,客戶端只需要通過瀏覽器請(qǐng)求就可以獲得結(jié)果,不必在客戶端機(jī)器上也安裝Java環(huán)境,這就是所謂的瘦客戶端。
我們先編寫一個(gè)JSP頁面,命名為hello.jsp:
<%@ page import="javax.naming.*,javax.rmi.*,Hello,HelloHome" %>
<html>
<head>
<title>Test HelloEJB</title>
</head>
<body>
<%
// init context:
Context ctx = new InitialContext();
// lookup:
Object obj = ctx.lookup("ejb/Hello");
// get home object:
HelloHome home = (HelloHome)PortableRemoteObject.narrow(obj, HelloHome.class);
// create ejb object:
Hello hello = home.create();
// invoke business method:
String words = hello.say();
out.println(words);
%>
</body>
</html>
Web應(yīng)用程序需要按照如下目錄結(jié)構(gòu)組織:

其中,WEB-INF/classes存放自己編寫的class文件,WEB-INF/lib存放用到的所有jar包,其他的JSP文件可以存放在根目錄下的任何位置。
和EJB組件一樣,作為Web組件的JSP和Servlet也必須部署到服務(wù)器上。啟動(dòng)服務(wù)器,再次運(yùn)行deploytool,并打開上次我們建立的hello application,選擇File > New > Web Component,按Next跳過歡迎屏幕,出現(xiàn)下面的對(duì)話框:

類似EJB的部署,我們也需要將hello.jsp和helloClient.jar添加到Contents中。點(diǎn)擊Edit添加hello.jsp和helloClient.jar這兩個(gè)文件,請(qǐng)注意目錄結(jié)構(gòu),添加完的目錄結(jié)構(gòu)一定是下圖所示,否則Web應(yīng)用程序不會(huì)正常工作:

然后Next,選擇Web組件的類型,這里我們應(yīng)當(dāng)選擇JSP:

在下一個(gè)對(duì)話框中選擇hello.jsp:

然后一路Next,當(dāng)出現(xiàn)WAR Context Root時(shí),輸入“/”:

剩下的均保持默認(rèn)值即可。現(xiàn)在我們的Hello應(yīng)用程序有兩個(gè)組件:一個(gè)EJB和一個(gè)JSP:

然后選擇Tools > Deploy…,將應(yīng)用程序重新部署一遍,完畢后,打開瀏覽器,輸入http://localhost:8000/hello.jsp:

瀏覽器顯示出了正確的頁面!
待續(xù)...