论坛首页 Java版 企业应用

EJB3.0入门---第一个程序,HelloWorld!

浏览 1478 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-11-27 关键字: ejb3.0, j2ee
第一步:
      新建一个项目.这个项目为EJB模块.
      新建一个接口,名为HelloWorld.java,代码如下:
HelloWorld.java 代码
 
  1. package com.sample.ejb3;  
  2. public interface HelloWorld {  
  3. public String SayHello(String name);  
  4. }  
然后新建一个无关态会话Bean,一般的命名规则是:接口名+Bean。实现上面的接口要加入两个注释@Remote和@Stateless。
@Stateless表示无状态会话Bean,@Remote表示这个无状态会话Bean的remote接口。。无状态会话Bean 是一个简单的POJO(纯粹的面向对象思想的java 对象),EJB3.0 容器自动地实例化及管理这个Bean。HelloWorldBean.java代码如下:
HelloWorldBean.java 代码
  1. package com.sample.ejb3.impl;  
  2. import com.sample.ejb3.HelloWorld;  
  3. import javax.ejb.Remote;  
  4. import javax.ejb.Stateless;  
  5. @Stateless  
  6. @Remote ({HelloWorld.class})  
  7. public class HelloWorldBean implements HelloWorld {  
  8. public String SayHello(String name) {  
  9. return name +"说:Hello World.";  
  10. }  
  11. }  
这样,就把EJB模块开发完成!可以发布到Jboss中去,(注意:Jboss的版本要在4.0.5以上,以前的版本可能出现报错现象)。  第二步:开了一个客户端来访问这个EJB。当一个无状态会话Bean 发布到EJB 容器时,容器就会为她创建一个对象stub,并把她注册进容器的JNDI 目录,客户端代码使用她的JNDI 名从容器获得他的stub。通过这个stub,客户端可以调用她的业务方法。例子代码如下:index.jsp代码如下:
index.jsp 代码
 
  1. <%@page contentType="text/html" pageEncoding="UTF-8"%>  
  2. <%@ page import="com.sample.HelloWorld, javax.naming.*, java.util.Properties"%>  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
  4.    "http://www.w3.org/TR/html4/loose.dtd">  
  5.   
  6. <html>  
  7.     <head>  
  8.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  9.         <title>JSP Page</title>  
  10.     </head>  
  11.     <body>  
  12.         <h2>  
  13.             <%  
  14.               Properties props=new Properties();  
  15.              props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");  
  16.               props.setProperty("java.naming.provider.url", "localhost:1099");  
  17.               props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");  
  18.                //props.setProperty("", "");  
  19.               System.getProperties();  
  20.           try{  
  21.                InitialContext ctx=new InitialContext(props);  
  22.               
  23.                 HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");  
  24.                 out.println(helloworld.SayHello("大家"));  
  25.             }  
  26.             catch(Exception ex){  
  27.                 out.println(ex.getMessage());  
  28.             }  
  29.             %>  
  30.                       
  31.         </h2>  
  32.     </body>  
  33. </html>  
然后部署到服务器上,访问这个页面!
   
最后更新时间:2007-12-04
最近想学习ejb
有源代码的工程吗?
谢谢
   
0 请登录后投票
最后更新时间:2007-12-05
比Ejb2简洁了好多。。。
   
0 请登录后投票
最后更新时间:2008-07-29
能够具体解释下index.jsp是如何调用ejb的?
其中的properties做什么用的?
   
0 请登录后投票
最后更新时间:2008-07-29
Robbiet 写道
能够具体解释下index.jsp是如何调用ejb的?
其中的properties做什么用的?


建议去看看EJB2.0咯,调用EJB这一块没有什么很大的差别。
   
0 请登录后投票
最后更新时间:2008-08-31
你在客户端是通过新建一个工程,然后访问EJB的,但客户端的com.sample.HelloWorld接口并没有定义啊,执行<%@ page import="com.sample.HelloWorld>可能会报错吧,因为你只是在EJB模块中定义了com.sample.ejb3.HelloWorld,而在客户端没有定义com.sample.HelloWorld接口。
执行 HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
应该会报HelloWorld cannot be resolved to a type 的异常。
是不是楼主在客户端也定义了com.sample.HelloWorld接口,这个接口跟EJB模块的com.sample.ejb3.HelloWorld接口完全一样?
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛:
JavaEye推荐