在系统根目录下新建一个名为" hello-ejb "的文件夹,下面我们来在此文件夹下开发我们的 EJB 程序
( 1 )在" hello-ejb "文件夹下新建一个 Hellobean.java 文件编写业务方法,其代码如下
package ejbtest;
import javax.ejb.*;
/* Stateless Session Bean. 这个 Bean 只有一个业务方法 , 输出一个字符串 .*/
@Stateless
public class HelloBean implements HelloRemote{
/* 业务方法 */
public String sayHello(){ return " 欢迎来到 EJB 世界! ";}}
( 2 )在" hello-ejb "文件夹下新建一个 Hello.java 文件,编写业务接口,其代码如下
package ejbtest;
import javax.ejb.*;
// 业务接口,客户端通过这个接口调用 EJB 对象,实现相应的功能。
public interface Hello{public String sayHello();}
( 3 )在" hello-ejb "文件夹下新建一个 HelloRemote.java 文件,编写远程接口,其代码如下
package ejbtest;
import javax.ejb.*;
/* 远程接口,客户端通过这个接口调用 EJB 对象 */
@Remote
public interface HelloRemote extends Hello{ }
( 4 )成功编译完以上 Java 文件后,下面我们来开发 Servlet 中通过远程方式调用 EJB 的方法,在" hello-ejb "文件夹下新建一个 TestEjbServletRemote.java 文件,其代码如下
package ejbtest;
import java.io.*;
import java.util.*;
import javax.naming.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.rmi.*;
public class TestEjbServletRemote extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType("text/html;charset=GBK");
PrintWriter out = response.getWriter();
out.println("<html><head><title>"+
"Servlet 中调用 Ejb 中的方法―远程方式 </title></head><body>");
try{
Context initial = new InitialContext();
Hello hello=(Hello)initial.lookup("ejbtest.HelloRemote");
String say = hello.sayHello
;
out.println("************************************<br>");
out.println("EJB 调用结果: "+
"<b><font color=red>"+say+"</font></b><br>");
out.println("************************************");
out.println("</b><h3>"+
" 恭喜你 , 你已经成功调用 EJB!!!</h3></body></html>");
}catch (Exception ex) {
out.println("**** 出现例外!,重新调试! *****");
out.println(ex);}
}
}
( 5 )编译完以上四个文件后,再在" hello-ejb "文件夹下新建一个" bean "文件夹,并将" Hellobean.java "、" Hello.java "和" HelloRemote.java "三个文件放入" bean "文件夹中
( 6 )在" hello-ejb "文件夹下新建一个" ejbtest "文件夹,将我们刚才编译" Hellobean.java "、" Hello.java "和" HelloRemote.java "后所生成的" .class "文件放下入" ejbtest "文件夹
( 7 )在" bean "文件夹下新建一个" MATA-INF "文件夹
( 8 )使用如下命令将" ejbtest "文件夹和" MATA-INF "文件夹打成一个" hello.jar "的包,如图 3-5-1 所示
cd /hello-ejb/bean
jar cvf hello.jar META-INF ejbtest 
图 3-5-1
命令执行后我们会看到在" bean "文件夹下会多一个" hello.jar "的文件,如图 3-5-2 所示 
图 3-5-2
( 9 )在 " hello-ejb "文件夹下新建一个" war "文件夹,并将" TestEjbServletRemote.java "文件放入" war "文件夹
( 10 )在" war "文件夹下新建一个" ejbtest "文件夹,将我们刚才编译" TestEjbServletRemote.java " 后所生成的" .class "文件放下入" ejbtest "文件夹
( 11 )在" war "文件夹下新建一个" web_war "文件夹
(12) 在" web_war "文件夹下新建一个" WEB-INF "文件夹
(13) 在" WEB-INF "文件夹下新建一个" lib "文件夹,并将" bean "文件夹下" hello.jar "拷贝进来,如图 3-5-3 所示 
图 3-5-3
( 14 )在" WEB-INF "文件夹下新建一个" classes "文件夹,并将" war "文件夹下的" ejbtest "文件夹拷贝一份放入其中
( 15 )在" WEB-INF "文件夹下新建一个" sun-web.xml "文件其代码如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 Servlet 2.4//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_4-1.dtd">
<sun-web-app><context-root>/hello</context-root></sun-web-app>
( 16 )在" WEB-INF "文件夹下新建一个" web.xml "文件其代码如下
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app><display-name>HelloApp</display-name>
<servlet>
<servlet-name>TestEjbServletRemote</servlet-name>
<servlet-class>ejbtest.TestEjbServletRemote</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestEjbServletRemote</servlet-name>
<url-pattern>/TestEjbServletRemote</url-pattern>
</servlet-mapping>
<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>
创建完成后如图 3-5-4 所示 
图 3-5-4
( 17 )回到" web_war "文件夹下新建一个" index.jsp "文件 , 其代码如下
<%@ page contentType="text/html;charset=GBK" %>
<html>
<head><title>EJB 简介 </title></head>
<body>
<a href="TestEjbServletRemote" target="Blank1">
远程调用― TestEjbServletRemote</a><br/>
</body>
</html>
( 18 )使用如下命令将" web_war "文件夹和" index.jsp "文件打成一个" hellotest.war "包,如图 3-5-5 所示
cd /hello-ejb/war/web_war
jar cvf hellotest.war WEB-INF index.jsp 
图 3-5-5
命令执行后我们会看到在" bean "文件夹下会多一个" hellotest.war "的文件,如图 3-5-6 所示 
图 3-5-6
( 19 )为了方便部署,笔者将" bean "文件夹下的" hello.jar "和" war "文件夹下的" hellotest.war "拷贝到的系统根目录,如图 3-5-7 所示 
图 3-5-7
( 20 )启动 GlassFish ,打开浏览器,登入 Glassfish 管理帐户后,点击页面左侧的"应用客户机模块",在右侧窗口处单击"部署"如图 3-5-8 
图 3-5-8
( 21 )选中"可以从 Application Server 访问的本地打包文件或目录",使用"浏览文件…"找到我们刚才所打的" hello.jar " 如图 3-5-9 
图 3-5-9
( 22 )单击页面左上角的"确定"便会出现如图 3-5-10 所示页面,我们可以看到我们所部署的" hello.jar "文件 
图 3-5-10
( 23 )同样的方法,我们在" Web 应用程序"中部署我们的" hellotest.war "文件,部署完毕后如图 3-5-11 所示 
图 3-5-11
( 24 )点击打开一个新的浏览器,在地址栏键入" http://localhost:8080/hellotest "便会出现如图 3-5-12 所示页面 
图 3-5-12
( 25 )点击网页中的超链接我们便可以进入如图 3-5-13 所示页面 
图 3-5-13
自此,我们基于 Solaris 下 GlassFish 中 EJB 的开发完成。
没有评论:
发表评论