ejb2.0 HelloWord

本文介绍如何使用 EJB 2.0 构建简单的 HelloWorld 应用程序,包括搭建开发环境、创建 EJB 组件及部署到 JBoss 容器的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   中国电信网上营业厅项目是使用ejb2.0开发的,在项目中已有的框架中修修补补,也没写过一个HelloWorld的例子,今天朝花夕拾,写一个例子

步骤:

1.在eclipse下新建一个java项目.命名叫 ejb2test

2.在项目的根目录下建立  META-INF 文件夹,主要是为了存放ejb-jar.xml, jboss.xml

3.在src文件夹下建立 两个包 cn.com.xinli.ejb  ,cn.com.xinli.test

4.到入需要的jar包到classpath中, jboss-j2ee.jar,这个jar包可以在 %jbossHome%\server\default\lib中找到

5.下面开始写代码,一个ejb需要写两个接口和一个实现类.

 

在cn.com.xinli.ejb

先写本地接口 HelloWorldHome.java

Java代码 复制代码 收藏代码
  1. package cn.com.xinli.ejb;   
  2. import java.rmi.RemoteException;   
  3. import javax.ejb.CreateException;   
  4. import javax.ejb.EJBHome;   
  5. public interface HelloWorldHome extends EJBHome   
  6. {   
  7.     HelloWorldRemote create() throws RemoteException, CreateException;   
  8. }  

远程接口:  HelloWorldRemote.java

Java代码 复制代码 收藏代码

  1. package cn.com.xinli.ejb;   
  2.   
  3. import java.rmi.RemoteException;   
  4.   
  5. import javax.ejb.EJBObject;   
  6.   
  7. public interface HelloWorldRemote extends EJBObject   
  8. {   
  9.     String sayHello() throws RemoteException;   
  10.   
  11. }  

 实现Bean类:HelloWorldBean.java (必须有会话bean的5个状态,可以为空实现,和远程接口中要实现的方法,网厅项目中是又把实现方法写在一个类里,每次 new一个类的对象,返回一个实现方法给Bean)

 Java代码 复制代码 收藏代码

  1. package cn.com.xinli.ejb;   
  2.   
  3. import java.rmi.RemoteException;   
  4.   
  5. import javax.ejb.EJBException;   
  6. import javax.ejb.SessionBean;   
  7. import javax.ejb.SessionContext;   
  8.   
  9.   
  10. public class HelloWorldBean implements SessionBean   
  11. {   
  12.        
  13.      public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException   
  14.         {   
  15.             System.out.println("set session context");   
  16.                
  17.         }   
  18.            
  19.         public void ejbCreate() throws EJBException   
  20.         {   
  21.             System.out.println("ejb create");   
  22.                
  23.         }   
  24.   
  25.         public void ejbRemove() throws EJBException, RemoteException   
  26.         {   
  27.             System.out.println("ejb remove");   
  28.         }   
  29.   
  30.         public void ejbActivate() throws EJBException, RemoteException   
  31.         {   
  32.             System.out.println("ejb activate");   
  33.         }   
  34.   
  35.         public void ejbPassivate() throws EJBException, RemoteException   
  36.         {   
  37.             System.out.println("ejb passivate");   
  38.         }   
  39.   
  40.         public String sayHello() throws RemoteException   
  41.         {   
  42.             return "Welecome to ejb2.0,HXL";   
  43.         }   
  44.   
  45.     }  

 6.写配置文件在META-INF 目录下,这个目录的名字不能改变(这里我们是一个有状态的回话bean)

ejb-jar.xml

Xml代码 复制代码 收藏代码
  1. < span>xml version="1.0" encoding="gb2312"?<    

  2. "http://java.sun.com/dtd/ejb-jar_2_0.dtd"<  
  3.   
  4. < span>ejb-jar<  
  5.     < span>description<ejbdescription<  
  6.     < span>display-name<myEJBTestdisplay-name<  
  7.   
  8.     < span>enterprise-beans<  
  9.         < span>session<  
  10.             < span>display-name<helloEJBdisplay-name<  
  11.             < span>ejb-name<helloEJBejb-name<  
  12.             < span>home<cn.com.xinli.ejb.HelloWorldHomehome<  
  13.             < span>remote<  
  14.                 cn.com.xinli.ejb.HelloWorldRemote   
  15.             remote<  
  16.             < span>ejb-class<  
  17.                 cn.com.xinli.ejb.HelloWorldBean   
  18.             ejb-class<  
  19.             < span>session-type<Statefulsession-type<  
  20.             < span>transaction-type<Beantransaction-type<  
  21.         session<  
  22.     enterprise-beans<  
  23. ejb-jar<  

 jboss.xml  (其中)元素的值必须在容器中唯一

Xml代码 复制代码 收藏代码

  1. < span>xml version="1.0" encoding="gb2312"?<  
  2.   
  3. < span>jboss<  
  4.     < span>enterprise-beans<  
  5.         < span>session<  
  6.             < span>ejb-name<helloEJBejb-name<  
  7.             < span>jndi-name<ejb/helloEJBjndi-name<  
  8.         session<  
  9.     enterprise-beans<  
  10. jboss<  

7.把项目打成jar包发布在ejb容器中,我使用的是Jboss,大包后放在 %JbossHome%\server\default\deploy下

打包我们可以用eclipse ,在项目上点右键-<Export-<Jar File-<  记得要选择generate 就可以了,也可以使用 jar cvf 命令来打jar包

8.启动Jboss,我们会看到我们发布的ejb,如果没有错误的话

 9.下面我们写一个测试,首先我们要导入 jboss-client.jar 到classpath 下,这个jar包在 %JbossHome%\client下

Test.java

Java代码 复制代码 收藏代码

  1. package cn.com.xinli.ejb.test;   
  2.   
  3. import java.util.Properties;   
  4.   
  5. import javax.naming.InitialContext;   
  6. import javax.rmi.PortableRemoteObject;   
  7.   
  8. import org.apache.log4j.Logger;   
  9.   
  10. import cn.com.xinli.ejb.HelloWorldHome;   
  11. import cn.com.xinli.ejb.HelloWorldRemote;   
  12.   
  13. public class Test   
  14. {   
  15.   
  16.     static Logger log=Logger.getLogger(Test.class);   
  17.     /**  
  18.      * @param args  
  19.      */  
  20.     public static void main(String[] args)   
  21.     {   
  22.            
  23.         System.out.println("===========================================================");   
  24.         Properties props = new Properties();   
  25.         props.setProperty("java.naming.factory.initial""org.jnp.interfaces.NamingContextFactory");   
  26.         props.setProperty("java.naming.provider.url""localhost:1099");   
  27.         props.setProperty("java.naming.factory.url.pkgs""org.jboss.naming");   
  28.         try  
  29.         {   
  30.             InitialContext ctx = new InitialContext(props);   
  31.                
  32.             Object objRef = ctx.lookup("ejb/helloEJB");   
  33.                
  34.             HelloWorldHome home = (HelloWorldHome) PortableRemoteObject.narrow(objRef, HelloWorldHome.class);   
  35.                
  36.             HelloWorldRemote remote = home.create();   
  37.                
  38.             log.info(remote.sayHello());   
  39.         }   
  40.         catch (Exception ex)   
  41.         {   
  42.             ex.printStackTrace();   
  43.         }   
  44.     }   
  45. }  

 10.结果:

===========================================================
0    [main] INFO  cn.com.xinli.ejb.test.Test(38) - Welecome to ejb2.0,HXL

 到此,我们就完成了一个ejb2.0 HelloWorld 的开发

 在ejb-jar.xml 中,我们将  元素的值修改为Stateless,就是一个无状态的回话bean了,无状态的会话bean也是使用的最多的bean了. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值