- 浏览: 6824 次
- 性别:
- 来自: 北京
文章分类
最新评论
ejb2.0 HelloWord
http://8366.iteye.com/blog/247315
关键字: ejb
中国电信网上营业厅项目是使用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
- package cn.com.xinli.ejb;
- import java.rmi.RemoteException;
- import javax.ejb.CreateException;
- import javax.ejb.EJBHome;
- public interface HelloWorldHome extends EJBHome
- {
- HelloWorldRemote create() throws RemoteException, CreateException;
- }
package cn.com.xinli.ejb; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface HelloWorldHome extends EJBHome { HelloWorldRemote create() throws RemoteException, CreateException; }
远程接口: HelloWorldRemote.java
- package cn.com.xinli.ejb;
- import java.rmi.RemoteException;
- import javax.ejb.EJBObject;
- public interface HelloWorldRemote extends EJBObject
- {
- String sayHello() throws RemoteException;
- }
package cn.com.xinli.ejb; import java.rmi.RemoteException; import javax.ejb.EJBObject; public interface HelloWorldRemote extends EJBObject { String sayHello() throws RemoteException; }
实现Bean类:HelloWorldBean.java (必须有会话bean的5个状态,可以为空实现,和远程接口中要实现的方法,网厅项目中是又把实现方法写在一个类里,每次 new一个类的对象,返回一个实现方法给Bean)
- package cn.com.xinli.ejb;
- import java.rmi.RemoteException;
- import javax.ejb.EJBException;
- import javax.ejb.SessionBean;
- import javax.ejb.SessionContext;
- public class HelloWorldBean implements SessionBean
- {
- public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException
- {
- System.out.println("set session context");
- }
- public void ejbCreate() throws EJBException
- {
- System.out.println("ejb create");
- }
- public void ejbRemove() throws EJBException, RemoteException
- {
- System.out.println("ejb remove");
- }
- public void ejbActivate() throws EJBException, RemoteException
- {
- System.out.println("ejb activate");
- }
- public void ejbPassivate() throws EJBException, RemoteException
- {
- System.out.println("ejb passivate");
- }
- public String sayHello() throws RemoteException
- {
- return "Welecome to ejb2.0,HXL";
- }
- }
package cn.com.xinli.ejb; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; public class HelloWorldBean implements SessionBean { public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException { System.out.println("set session context"); } public void ejbCreate() throws EJBException { System.out.println("ejb create"); } public void ejbRemove() throws EJBException, RemoteException { System.out.println("ejb remove"); } public void ejbActivate() throws EJBException, RemoteException { System.out.println("ejb activate"); } public void ejbPassivate() throws EJBException, RemoteException { System.out.println("ejb passivate"); } public String sayHello() throws RemoteException { return "Welecome to ejb2.0,HXL"; } }
6.写配置文件在META-INF 目录下,这个目录的名字不能改变(这里我们是一个有状态的回话bean)
ejb-jar.xml
- <?xml version="1.0" encoding="gb2312"?>
- <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
- "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
- <ejb-jar>
- <description>ejb</description>
- <display-name>myEJBTest</display-name>
- <enterprise-beans>
- <session>
- <display-name>helloEJB</display-name>
- <ejb-name>helloEJB</ejb-name>
- <home>cn.com.xinli.ejb.HelloWorldHome</home>
- <remote>
- cn.com.xinli.ejb.HelloWorldRemote
- </remote>
- <ejb-class>
- cn.com.xinli.ejb.HelloWorldBean
- </ejb-class>
- <session-type>Stateful</session-type>
- <transaction-type>Bean</transaction-type>
- </session>
- </enterprise-beans>
- </ejb-jar>
<?xml version="1.0" encoding="gb2312"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <description>ejb</description> <display-name>myEJBTest</display-name> <enterprise-beans> <session> <display-name>helloEJB</display-name> <ejb-name>helloEJB</ejb-name> <home>cn.com.xinli.ejb.HelloWorldHome</home> <remote> cn.com.xinli.ejb.HelloWorldRemote </remote> <ejb-class> cn.com.xinli.ejb.HelloWorldBean </ejb-class> <session-type>Stateful</session-type> <transaction-type>Bean</transaction-type> </session> </enterprise-beans> </ejb-jar>
jboss.xml (其中)<jndi-name>元素的值必须在容器中唯一
- <?xml version="1.0" encoding="gb2312"?>
- <jboss>
- <enterprise-beans>
- <session>
- <ejb-name>helloEJB</ejb-name>
- <jndi-name>ejb/helloEJB</jndi-name>
- </session>
- </enterprise-beans>
- </jboss>
<?xml version="1.0" encoding="gb2312"?>
<jboss>
<enterprise-beans>
<session>
<ejb-name>helloEJB</ejb-name>
<jndi-name>ejb/helloEJB</jndi-name>
</session>
</enterprise-beans>
</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
- package cn.com.xinli.ejb.test;
- import java.util.Properties;
- import javax.naming.InitialContext;
- import javax.rmi.PortableRemoteObject;
- import org.apache.log4j.Logger;
- import cn.com.xinli.ejb.HelloWorldHome;
- import cn.com.xinli.ejb.HelloWorldRemote;
- public class Test
- {
- static Logger log=Logger.getLogger(Test.class);
- /**
- * @param args
- */
- public static void main(String[] args)
- {
- System.out.println("===========================================================");
- Properties props = new Properties();
- props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
- props.setProperty("java.naming.provider.url", "localhost:1099");
- props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
- try
- {
- InitialContext ctx = new InitialContext(props);
- Object objRef = ctx.lookup("ejb/helloEJB");
- HelloWorldHome home = (HelloWorldHome) PortableRemoteObject.narrow(objRef, HelloWorldHome.class);
- HelloWorldRemote remote = home.create();
- log.info(remote.sayHello());
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
- }
package cn.com.xinli.ejb.test; import java.util.Properties; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import org.apache.log4j.Logger; import cn.com.xinli.ejb.HelloWorldHome; import cn.com.xinli.ejb.HelloWorldRemote; public class Test { static Logger log=Logger.getLogger(Test.class); /** * @param args */ public static void main(String[] args) { System.out.println("==========================================================="); Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); props.setProperty("java.naming.provider.url", "localhost:1099"); props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); try { InitialContext ctx = new InitialContext(props); Object objRef = ctx.lookup("ejb/helloEJB"); HelloWorldHome home = (HelloWorldHome) PortableRemoteObject.narrow(objRef, HelloWorldHome.class); HelloWorldRemote remote = home.create(); log.info(remote.sayHello()); } catch (Exception ex) { ex.printStackTrace(); } } }
10.结果:
===========================================================
0 [main] INFO cn.com.xinli.ejb.test.Test(38) - Welecome to ejb2.0,HXL
到此,我们就完成了一个ejb2.0 HelloWorld 的开发
在ejb-jar.xml 中,我们将<session-type> </session-type> 元素的值修改为Stateless,就是一个无状态的回话bean了,无状态的会话bean也是使用的最多的bean了.
相关推荐
《精通EJB2.0》是一本专注于企业级JavaBeans(EJB)2.0版本技术的专业书籍。源码提供给读者深入理解EJB2.0的实践操作,帮助开发者在实际项目中应用EJB技术。以下是根据这些文件名解析出的一些关键知识点: 1. **EJB...
EJB2.0,全称为Enterprise JavaBeans 2.0,是Java EE(Java Platform, Enterprise Edition)平台上的一个核心组件,主要用于构建可扩展、安全且事务处理能力强的企业级应用程序。在EJB2.0中,引入了一系列新特性和...
### EJB2.0与EJB3.0的主要区别 #### 一、简介 企业Java Beans(EJB)是Java平台为企业级应用提供的一种组件模型。随着技术的发展,EJB经历了多个版本的迭代,其中EJB 2.0和EJB 3.0是两个重要的里程碑版本。本文将...
在提供的资源中,《EJB2.0.pdf》是一份详细讲解EJB 2.0的指南,值得深入学习。同时,"www.pudn.com.txt"可能是该资源的来源信息,可能包含了获取更多相关资料的链接。学习EJB 2.0不仅有助于理解早期的企业级Java开发...
**EJB2.0规范详解** 企业级JavaBean(Enterprise JavaBeans,简称EJB)是Java平台上用于构建可部署的、分布式的企业级应用程序的核心技术之一。EJB2.0是其发展过程中的一个重要版本,它引入了许多关键特性,极大地...
**EJB2.0 实例开发** EJB(Enterprise JavaBeans)是Java平台上的企业级应用组件模型,它为构建可扩展、安全且事务处理能力强的企业级应用提供了规范。EJB2.0作为其一个重要版本,引入了许多特性,如会话bean、实体...
**EJB 2.0 入门教程** Enterprise JavaBeans(EJB)是Java平台企业版(Java EE)的一部分,它提供了一种标准的方式来构建分布式、可移植的服务器端组件。EJB 2.0 是EJB技术的一个里程碑,发布于2003年,引入了许多...
EJB2.0是EJB规范的一个版本,它在1.1版的基础上进行了许多改进,旨在提高开发者的生产力,同时保持了企业级应用的可扩展性和可靠性。 EJB2.0的主要组成部分包括: 1. 会话Bean(Session Beans):它们代表客户端的...
提供的"www.pudn.com.txt"可能包含了更多关于EJB 2.0的链接或参考资源,可以结合"EJB2.0.pdf"文档深入学习。理解并掌握EJB 2.0的实体Bean对于理解企业级Java应用的架构和设计原则至关重要。随着技术的发展,虽然EJB ...
**企业级JavaBeans(EJB)2.0详解——基于Helloworld示例** EJB(Enterprise JavaBeans)是Java EE(Java Platform, Enterprise Edition)平台的核心组成部分,它为开发分布式、事务处理、安全和可扩展的企业级应用...
EJB(Enterprise JavaBeans)2.0是Java平台企业版(Java EE)的一部分,它提供了一种标准的方式来创建可部署在服务器端的组件,用于构建分布式的企业级应用程序。EJB 2.0的核心概念包括会话bean、实体bean和消息驱动...
**企业级JavaBeans(EJB)2.0详解** 企业级JavaBeans(EJB)是Java平台上用于构建可部署在企业级服务器上的分布式、组件化的应用程序的重要技术。EJB 2.0是其一个重要的版本,它在1.1的基础上进行了多方面的改进和...
根据提供的文件信息“EJB2.0.pdf”,我们可以推断出这份文档主要涉及的是Enterprise JavaBeans(EJB)2.0版本的相关知识和技术细节。EJB是Java平台的一部分,用于开发分布式网络应用的企业级组件模型。下面将详细...
在本文中,我们将深入探讨如何在WebLogic环境中部署EJB 2.0,特别是实现本地接口的Session Bean。 EJB 2.0是Java EE早期版本中的组件模型,用于构建可复用、分布式的企业级服务。它定义了三种主要类型的Bean:...
EJB 2.0是EJB规范的一个版本,发布于2001年,相较于EJB 1.1,它在组件模型、容器管理、事务管理等方面有了显著改进。本教程"ejb 2.0 demo"旨在帮助学习者理解并掌握EJB 2.0的关键概念和技术。 EJB 2.0的核心组件...
本文将详细探讨EJB3.0与EJB2.0之间的主要差异。 首先,EJB3.0对编程模型进行了简化。在EJB2.0中,每个EJB需要定义两个接口和一个Bean实现类,这在项目规模较大时会增加代码的复杂性。EJB3.0通过引入annotations(元...
【标题】:WebSphere 6与EJB 2.0详解 【描述】:WebSphere 6是一个由IBM推出的强大企业级应用服务器,它支持Java Enterprise Edition(JEE)规范,其中包括EJB 2.0(Enterprise JavaBeans 2.0)。EJB 2.0是Java平台...
从最基础开始介绍jsf,逐步深入,让读者容易接受.