作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!
环境 | Enviroment
- Ubuntu 10.10
- Eclipse 3.6.1
- JBoss GA 5.1.0
建立EJB3项目| Create EJB3 Project
1、选择菜单 File –> New –> Other。出现“New”对话框,选择EJB –> EJB Project。
点击“Next >”按钮,继续步骤2。
2、出现“New EJB Project”对话框。在Project name输入框中输入项目名称,在Target runtime下拉框中选择JBoss v5.0(注意:此处JBoss已经安装并且在Eclipse中完成配置),在EJB module version的下拉框中选择3.0。
点击“Next >”按钮,继续步骤3。
3、继续设置EJB项目的源代码文件夹和源代码编译后class的输出目录。删除项目默认的源代码文件夹,点击“Add Folder”按钮添加自己的源文件夹,修改Default output folder为自定义的class输出目录。
点击“Next >”按钮,继续步骤4。
4、去掉“Generate ejb-jar.xml deployment descriptor”复选框。
点击“Finish”按钮,完成EJB3项目的创建。
建立Session Bean | Create Session Bean
1、在“Session Beans“上点击右键,选择菜单 New –> Session Bean(EJB 3.x)。
2、在“Create EJB 3.x Session Bean”对话框中设置如下:
- 在“Source folder“输入框中输入保存类源代码目录:/JBossEJB3/src/main/java,也可以点击后面的“Browser”按钮进行选择。
- 在“Class name”输入框中输入类的名称:HelloWorld。
- 在“Create business interface”下面选择Remote和Locale,表示同时生成远程接口和本地接口。选择后,Eclipse会自动生成远程接口和本地接口的完整类路径。
点击“Next >”按钮,继续步骤3。
3、Eclipse会自动生成Bean name等信息,如果没有特殊情况就可以按照默认信息。
点击“Finish”按钮,完成Session Bean(HelloWorld)的创建。
完整的代码的清单如下:
1)远程接口HelloWorldRemote.java的源代码:
1 2 3 4 5 6 7 8
| package cn.aofeng.ejb3; import javax.ejb.Remote; @Remote public interface HelloWorldRemote { }
|
2)本地接口HelloWorldLocale.java的源代码:
1 2 3 4 5 6 7 8
| package cn.aofeng.ejb3; import javax.ejb.Local; @Local public interface HelloWorldLocal { }
|
3)Session Bean类HelloWorld.java的源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package cn.aofeng.ejb3; import javax.ejb.Stateless; * Session Bean implementation class HelloWorld * * @author 傲风 <a href="mailto:aofengblog@163.com">aofengblog@163.com</a> */ @Stateless public class HelloWorld implements HelloWorldRemote, HelloWorldLocal { * Default constructor. */ public HelloWorld() { } }
|
建立Session Bean的方法 | Create Method for Session Bean
1、在远程接口和本地接口中定义方法:String sayHello();,完整的源代码清单如下:
1)远程接口HelloWorldRemote.java的源代码:
1 2 3 4 5 6 7 8 9 10
| package cn.aofeng.ejb3; import javax.ejb.Remote; @Remote public interface HelloWorldRemote { String sayHello(); }
|
2)本地接口HelloWorldLocale.java的源代码:
1 2 3 4 5 6 7 8 9
| package cn.aofeng.ejb3; import javax.ejb.Local; @Local public interface HelloWorldLocal { String sayHello(); }
|
3)Session Bean类HelloWorld.java的源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| package cn.aofeng.ejb3; import java.util.Date; import javax.ejb.Stateless; * Session Bean implementation class HelloWorld * * @author 傲风 <a href="mailto:aofengblog@163.com">aofengblog@163.com</a> */ @Stateless public class HelloWorld implements HelloWorldRemote, HelloWorldLocal { * Default constructor. */ public HelloWorld() { } * @see cn.aofeng.ejb3.HelloWorldRemote#sayHello() * @see cn.aofeng.ejb3.HelloWorldLocale#sayHello() */ public String sayHello() { return "Hello, The World! Now is:" + new Date(); } }
|
在JBoss中部署EJB项目 | Deploy EJB Project in JBoss
1、在”Servers”中的“JBoss v5.0 localhost”中点击右键,选择菜单中的“Add and Remove”。
2、选择“Available”下拉框中选择项目“JBossEJB3“,点击“Add >”按钮,将项目添加到“Configured”下拉框中。
点击“Finish”按钮完成添加。
3、启动JBoss,在浏览器中输入http://localhost:8080/console ,进入控制台。如下图所示:项目JBossEJB3已经成功部署到JBoss中。
建立EJB3客户端| Create EJB3 Client
1、在源代码文件夹”test/main/resources”下建立JNDI配置文件:jndi.properties。内容如下:
1 2 3
| java.naming.provider.url=127.0.0.1:1099 java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
|
2、在源代码文件夹”test/main/java”下建立EJB3 Client类:HelloWorldTest。内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| * 建立时间:2011-3-13 */ package cn.aofeng.ejb3; import static org.junit.Assert.*; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; * {@link cn.aofeng.ejb3.HelloWorld}的单元测试代码. * * @author 傲风 <a href="mailto:aofengblog@163.com">aofengblog@163.com</a> */ public class HelloWorldTest { private static Context _context; @BeforeClass public static void init() throws Exception { Properties props = new Properties(); props.load(HelloWorldTest.class.getResourceAsStream("/jndi.properties")); _context = new InitialContext(); } @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } * Test method for {@link cn.aofeng.ejb3.HelloWorld#sayHello()}. * @throws NamingException */ @Test public void testSayHello() throws NamingException { HelloWorldRemote remote = (HelloWorldRemote) _context.lookup("HelloWorld/remote"); System.out.println(remote.sayHello()); } }
|
3、运行HelloWorldTest类,结果如下图所示: