Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2351143
  • 博文数量: 321
  • 博客积分: 3440
  • 博客等级: 中校
  • 技术积分: 2992
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-24 09:08
个人简介

我就在这里

文章分类

全部博文(321)

文章存档

2015年(9)

2014年(84)

2013年(101)

2012年(25)

2011年(29)

2010年(21)

2009年(6)

2008年(23)

2007年(23)

分类: Java

2014-12-18 16:29:53

内容:开发第一个EJB3/JBoss5

1. 先如下新建一个EJB项目

1

并做如下设定,请注意:

- 在选在J2EE Specification Level要记得选择Java EE 5.0 – EJB3,缺省的是EJB2

- 对于Persistence Configuration的设定,我们uncheck JPA capabilities,这仅是Entity Bean需要用到的特性

2

2. 先如下新建EJB要用到的Interface


3


4

编写代码如下:


  1. package com.pnft.test;
  2.  
  3. public interface GreetingEJBInterface

  4. {
  5.     public String greeting2People(String name);
  6. }
上述接口中只包含了一个方法,greeting2People,用来向名字为name的人问好。
3. 新建一个类以实现GreetingEJBInterface接口

5


6

要记得指定GreetingEJBBean要实现的接口GreetingEJBInterface。编写实现类代码如下:

  1. package com.pnft.test;

  2.  

  3. import javax.ejb.Remote;

  4. import javax.ejb.Stateless;

  5. @Stateless
  6. @Remote
  7. public class GreetingEJBBean implements GreetingEJBInterface

  8. {
  9.     public String greeting2People(String name)

  10.     {
  11.         return "你好! " + name;
  12.     }

  13. }

@Stateless@RemoteJDK1.5后引入的annotation机制中的词汇,它们分别表示无状态会话bean(Stateless session bean)和客户端远程访问的意思。到此这个EJB的编程工作就完成了。

 

小技巧:

在写完@Stateless后,将光标放在@Stateless中间,然后Ctrl + Shift + M就可以自动产生import javax.ejb.Stateless;语句,对于@Remote也是如此。这就是Eclipse所谓的quick fix的用法之一。

 

4. 启动jboss服务器并将刚才编写好的EJB发布到jboss服务器上

7


8


9


10

从上图中可以看到GreetingEJB已经成功发布到jboss上,下图是GreetingEJBjboss目录中的位置:

11

5. 编写客户端程序

   a. 新建一个12java project

12


13

点击Next按钮,

14

点击Finish按钮即可。

 

b. 在为客户端写代码之前,我们要准备好相应的环境。

   - EJB的接口打包,并引入至客户端项目中

15


16

点击Next按钮,并指定jar文件的存放目录:

17

 

下面将生成的FirstEJBInterface.jar加入到客户端项目的build path


18


19


20

 - %JBOSS_HOME%client目录下的所有jar文件加入到客户端项目的build path中。
为此我们先建立一个库
ejb3client如下:

21

再在客户端项目中引用之:

22


23


24

 

c. 开始写客户端程序代码

25

代码如下:

  1. package com.pnft.test;

  2. import javax.naming.InitialContext;

  3. import javax.naming.NamingException;

  4. public class GreetingEJBClient

  5. {
  6.     public static void main(String[] args)

  7.     {

  8.         try

  9.         {

  10.             InitialContext ctx = new InitialContext();

  11.             // ctx.lookup("GreetingEJBBean/remote");返回的对象其实是GreetingEJBBean

  12.             // 由于GreetingEJBBean实现(其实也是一种继承)了接口GreetingEJBInterface,因

  13.             // 此可以 将GreetingEJBBean upcast 为GreetingEJBInterface。

  14.             // 这是典型的java的多态性重要用途之一。

  15.             GreetingEJBInterface gei =

  16.                     (GreetingEJBInterface)ctx.lookup("GreetingEJBBean/remote");

  17.             String s = gei.greeting2People("Patrick");
  18.             System.out.println(s);
  19.         }
  20.         catch(NamingException ne)
  21.         {
  22.             ne.printStackTrace();
  23.         }
  24.     }
  25. }
d. 到目前为止还不能运行,因为客户端程序还不知道EJB到底在那个机器上,为此,我们要给客户端程序提供一个jndi.properties文件,该文件放在src目录下:

26



27

jndi.properties文件的内容如下:

  1. java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

  2. java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

  3. java.naming.provider.url=localhost

其中的最后一句,就是指出naming service在什么位置。

 

e. 现在运行客户端看看结果是怎样的

28

 6. 开发过程小结

转自:http://patmusing.blog.163.com/blog/static/1358349602010015105351448/

阅读(1254) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~