当前位置:首页>>开发编程>>JAVA>>新闻内容
[J2EE学习笔记02]用JBOSS 3.2发布EJB程序(3)
作者:icech 发布时间:2003-10-7 14:28:15 文章来源:weste.net

4         发布EJB程序

我们来编写一段最简单的“Hello World”无状态会话Bean,我们创建的无状态会话Bean运行在分布式对象架构里,执行着重要的任务:向客户端返回一字符串——“Hello,World!

4.1      创建Remote接口

我们以编写Remote接口开始,Remote接口复制了Bean“暴露”的每一个商务方法,由EJB容器实现Remote接口,实现的结果就是EJB对象。EJB对象将所有的客户端请求委托给实际的Bean。源代码如下:

 

Hello.java

package hello.ejb;

/**

 * Remote interface for Enterprise Bean: Hello

 */

public interface Hello extends javax.ejb.EJBObject {

/**

 * 唯一的方法hello,向客户端返回问候。

 */

       public String hello() throws java.rmi.RemoteException;

}

4.2      实现“Hello,world!”的Bean

接下来,创建Bean本身。我们将实现一个商务方法——hello()方法,我们还增加了所需的EJB容器回调方法。程序源代码如下“:

 

HelloBean.java

package hello.ejb;

/**

 * Bean implementation class for Enterprise Bean: Hello

 */

public class HelloBean implements javax.ejb.SessionBean {

       private javax.ejb.SessionContext mySessionCtx;

       /**

        * getSessionContext

        */

       public javax.ejb.SessionContext getSessionContext() {

              return mySessionCtx;

       }

       /**

        * setSessionContext

        */

       public void setSessionContext(javax.ejb.SessionContext ctx) {

              mySessionCtx = ctx;

       }

       /**

        * ejbActivate

        */

       public void ejbActivate() {

       }

       /**

        * ejbCreate

        */

       public void ejbCreate() throws javax.ejb.CreateException {

       }

       /**

        * ejbPassivate

        */

       public void ejbPassivate() {

       }

       /**

        * ejbRemove

        */

       public void ejbRemove() {

       }

       //

       // 商务方法

       //

       public String hello() {

        return "Hello,World!";

    }

      

}

 

4.3      创建“Hello,World!Home接口

这里编写的Home接口详细说明了生成和清除EJB对象方法。程序源代码如下:

 

HelloHome.java

package hello.ejb;

/**

 * Home interface for Enterprise Bean: Hello

 */

public interface HelloHome extends javax.ejb.EJBHome {

       /**

        * Creates a default instance of Session Bean: Hello

        */

       public Hello create() throws javax.ejb.CreateException, java.rmi.RemoteException;

}

4.4      EJB部署描述

ejb-jar.xml

       helloEJB

      

             

                     Hello

                     hello.ejb.HelloHome

                     hello.ejb.Hello

                     hello.ejb.HelloBean

                     Stateless

                     Container

             

      

 

下面icech来简单介绍一下XML部署描述的内容。

       helloEJB

 

      

 

             

        

                     Hello

 

                     hello.ejb.HelloHome

 

                     hello.ejb.Hello

 

                     hello.ejb.HelloBean

 

                     Stateless

                     Container

             

      

4.5      客户端代码

客户端代码执行以下几个任务:

·          查找Home对象;

·          使用Home对象生成EJB对象;

·          EJB对象调用hello()方法;

·          从内存中清除EJB对象。

 

HelloClient.java

package hello.ejb;

 

import java.util.*;

import java.io.*;

 

import javax.naming.InitialContext;

import javax.rmi.PortableRemoteObject;

 

 

public class HelloClient

{

 

   public static void main(String[] args)

   {    

      try

      {

         //jndi配置,硬编码到java中,应实现为外部属性文件

         Properties p=new Properties();

         p.setProperty("java.naming.factory.initial",

             "org.jnp.interfaces.NamingContextFactory");

         p.setProperty("java.naming.provider.url",

             "localhost:1099");

             

         //out print jndi配置

         p.list(System.out);

       

         // Get a naming context

         InitialContext jndiContext = new InitialContext(p);

         System.out.println("Got context");

        

         // Get a reference to the Interest Bean

         //jboss默认jndi名为ejb-jar.xml中的:ejb-name

         Object ref  = jndiContext.lookup("Hello");

         System.out.println("Got reference");

        

         // Get a reference from this to the Bean"s Home interface

         HelloHome home = (HelloHome)

         PortableRemoteObject.narrow(ref, HelloHome.class);

        

         // Create an Hello object from the Home interface

         Hello hello = home.create();

        

         // call the hello() method

         System.out.println(hello.hello());

      }

      catch(Exception e)

      {

         System.out.println(e.toString());

      }

   }

}

 


最新更新
·Java开发技术十年的回顾与展
·关于TOMCAT主目录与虚拟目录
·用java程序调用ffmpeg执行视
·JavaBean与Enterprise JavaB
·Java开发人员的十大戒律
·JavaFX Script将终结AJAX?还
·解决IE中所有png图片透明问题
·JSP解决地址栏中传递中文字符
·Eclipse五岁了:Java程序员的
·审查Java代码的十一种常见错
相关信息
·在JBoss中配置多个数据库和数据源
·Jboss3.0.7在Jbuilder7中的配置
·[图]用JBOSS 3.2发布EJB程序(4)
·[图]用JBOSS 3.2发布EJB程序(2)
·[图]用JBOSS 3.2发布EJB程序(1)
放生
愚爱
够爱
触电
白狐
心跳
知足
犯错
降临
分爱
葬爱
光荣
画心
火花
稻香
爱得起
这种爱
大丈夫
花蝴蝶
二缺一
小酒窝
下雨天
右手边
安静了
棉花糖
明天过后
边做边爱
擦肩而过
没有如果
怀念过去
等一分钟
越来越爱
寂寞暴走
你的承诺
Nobody
我们都一样
永远在身边
天使的翅膀
原谅我一次
i miss you
原谅我一次
吻的太逼真
姑娘我爱你
做你的爱人
一定要爱你
飞向别人的床
爱上别人的人
感动天感动地
心在跳情在烧
不潮不用花钱
如何能把你忘记
即使知道要见面
爱上你是一个错
最后一次的温柔
爱上你是我的错
怎么会狠心伤害我
亲爱的那不是爱情
伤心时候可以听情歌
爱上你等于爱上了错
不是因为寂寞才想你