EJB3.0中兩個重要的變更分別是:使用了Java5中的程序注釋工具和基于Hibernate的O/R映射模型。我們先來試試吧,感受一下:
首先創(chuàng)建一個名為HelloEJB的Java 工程,在工程的Library選項中添加外部Jar,將jboss-ejb3x.jar添加到工程中來,單擊完成
給工程添加一個接口文件 FirstEJB.java,詳細代碼如下:
package com.ejb;
public interface FirstEjb {
public String hello();
}
保存。
再添加一個類文件,F(xiàn)irstBean.java并實現(xiàn)剛創(chuàng)建的接口,具體代碼如下:
package com.ejb;
import javax.ejb.*;
@Stateless
@Remote({FirstEjb.class})
public class FirstBean implements FirstEjb {
public String hello() {
return "hello";
}
}
在這個文件中,我們導入了javax.ejb.*,并且添加了兩行特殊的注釋,
@Stateless 表示這是一個無狀態(tài)的會話Bean
@Remote({FirstEjb.class}) 表示Bean的遠程接口是FirstEJB.class
一個簡單的EJB我們就創(chuàng)建完成了,下面我們進行打包成Jar文件,
點擊File-Export,選擇Java -jar file,點擊Next ,只選擇導出Class文件即可,選擇保存Jar文件名本例取名為TestEjb.jar,保存路徑,下面我們創(chuàng)建一個測試工程,創(chuàng)建一個Web工程,名為:MyTestEjb,工程創(chuàng)建完畢后,要將在EJB工程中的接口類復制到此Web工程的src目錄中(包含Java包),這是為了測試方便,在實際使用中無太多意義。然后再創(chuàng)建一個Jsp文件,名為MyJsp.jsp,頁面具體代碼如下:
<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="com.ejb.*, javax.naming.*, java.util.Properties"%>
<%
Hashtable prop=new Hashtable();
prop.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
prop.put("java.naming.provider.url", "localhost:1099");
prop.put("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext ctx;
try {
//初始化環(huán)境
ctx = new InitialContext(prop);
//根據(jù)JNDI的名字,查找EJB ,此JNDI名字命名格式為:Remote接口名/remote
FirstEjb helloworld = (FirstEjb) ctx.lookup("FirstBean/remote");
out.println(helloworld.hello());
} catch (NamingException e) {
out.println(e.getMessage());
}
%>
保存 后,即可將此Web應用打包布署
點擊File-Export 選擇導出WAR文件,保存文件名為:MyTestEjb.war點擊完成。
首先創(chuàng)建一個名為HelloEJB的Java 工程,在工程的Library選項中添加外部Jar,將jboss-ejb3x.jar添加到工程中來,單擊完成
給工程添加一個接口文件 FirstEJB.java,詳細代碼如下:
package com.ejb;
public interface FirstEjb {
public String hello();
}
保存。
再添加一個類文件,F(xiàn)irstBean.java并實現(xiàn)剛創(chuàng)建的接口,具體代碼如下:
package com.ejb;
import javax.ejb.*;
@Stateless
@Remote({FirstEjb.class})
public class FirstBean implements FirstEjb {
public String hello() {
return "hello";
}
}
在這個文件中,我們導入了javax.ejb.*,并且添加了兩行特殊的注釋,
@Stateless 表示這是一個無狀態(tài)的會話Bean
@Remote({FirstEjb.class}) 表示Bean的遠程接口是FirstEJB.class
一個簡單的EJB我們就創(chuàng)建完成了,下面我們進行打包成Jar文件,
點擊File-Export,選擇Java -jar file,點擊Next ,只選擇導出Class文件即可,選擇保存Jar文件名本例取名為TestEjb.jar,保存路徑,下面我們創(chuàng)建一個測試工程,創(chuàng)建一個Web工程,名為:MyTestEjb,工程創(chuàng)建完畢后,要將在EJB工程中的接口類復制到此Web工程的src目錄中(包含Java包),這是為了測試方便,在實際使用中無太多意義。然后再創(chuàng)建一個Jsp文件,名為MyJsp.jsp,頁面具體代碼如下:
<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="com.ejb.*, javax.naming.*, java.util.Properties"%>
<%
Hashtable
prop.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
prop.put("java.naming.provider.url", "localhost:1099");
prop.put("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext ctx;
try {
//初始化環(huán)境
ctx = new InitialContext(prop);
//根據(jù)JNDI的名字,查找EJB ,此JNDI名字命名格式為:Remote接口名/remote
FirstEjb helloworld = (FirstEjb) ctx.lookup("FirstBean/remote");
out.println(helloworld.hello());
} catch (NamingException e) {
out.println(e.getMessage());
}
%>
保存 后,即可將此Web應用打包布署
點擊File-Export 選擇導出WAR文件,保存文件名為:MyTestEjb.war點擊完成。