`
cutesunshineriver
  • 浏览: 200640 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

初识EJB2.1

ejb 
阅读更多
企业Bean分为实体Bean、会话Bean和消息驱动Bean,其中会话Bean又分为有状态会话Bean和无状态会话Bean。
Enterprise Java Bean = EJB
|--Entity Bean
|--Session Bean
|   |--Stateful Session Bean = SFSB
|   |--Stateless Session Bean = SLSB
|--Message Driven Bean = MDB

Remote Method Invocation = RMI

Container Managed Persistent = CMP
Container Managed Relationships = CMR
Bean Managed Persistent = BMP

Container Managed Transaction = CMT
Bean Managed Transaction = BMT
EJB不支持嵌套事务。

Business Interface[EJBObject]
Home Interface[EJBHome]
Bean Class[EnterpriseBean]
Client通过JNDI找到Server的Stub,然后找到Home Interface,用Home Interface生成一个Business Interface,Business Interface代理了Bean Class。
Business Interface中的方法和Bean Class中的业务方法存在一一对应的关系,需要手工或者IDE来确保这一点。

接下来是从《Head First EJB》中的第一章EJB入门里实现的例子。
首先是Bean Class,
package com.bms;

import java.rmi.RemoteException;

import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

public class AdviceBean implements SessionBean {
	
	private static final long serialVersionUID = 1L;
	
	public String advice() {
		return "this is for EJB 2.1";
	}

	@Override
	public void ejbActivate() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	@Override
	public void ejbPassivate() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	@Override
	public void ejbRemove() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	@Override
	public void setSessionContext(SessionContext arg0) throws EJBException,
			RemoteException {
		// TODO Auto-generated method stub

	}

}


接着是Business Interface,
package com.bms;

import java.rmi.RemoteException;

import javax.ejb.EJBObject;

public interface Advice extends EJBObject {
	
	public String advice() throws RemoteException;

}


最后是Home Interface,
package com.bms;

import java.rmi.RemoteException;

import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface AdviceHome extends EJBHome {
	
	public Advice create() throws CreateException, RemoteException;

}


ejb-jar.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" version="3.0">
  <display-name>bpm-ejb </display-name>
  <!-- 
  <ejb-client-jar>bpm-ejbClient.jar</ejb-client-jar>
   -->
  <enterprise-beans>
  	<session>
  		<display-name>AdviceBean</display-name>
  		<ejb-name>AdviceBean</ejb-name>
  		<home>com.bms.AdviceHome</home>
  		<remote>com.bms.Advice</remote>
  		<ejb-class>com.bms.AdviceBean</ejb-class>
  		<session-type>Stateless</session-type>
  		<transaction-type>Bean</transaction-type>
  		<security-identity>
  			<description></description>
  			<use-caller-identity/>
  		</security-identity>
  	</session>
  </enterprise-beans>
</ejb-jar>


最后部署在weblogic server上,增加一个JNDI对象。
文件weblogic-ejb-jar.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-ejb-jar xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-ejb-jar http://xmlns.oracle.com/weblogic/weblogic-ejb-jar/1.2/weblogic-ejb-jar.xsd">
    <!--weblogic-version:10.3.6-->
    <wls:weblogic-enterprise-bean>
        <wls:ejb-name>TaskBean</wls:ejb-name>
        <wls:stateless-session-descriptor></wls:stateless-session-descriptor>
        <wls:jndi-name>com/bms/TaskBeanRemote</wls:jndi-name>
        <wls:local-jndi-name>com/bms/TaskBeanLocal</wls:local-jndi-name>
    </wls:weblogic-enterprise-bean>
    <wls:weblogic-enterprise-bean>
        <wls:ejb-name>QueryBean</wls:ejb-name>
        <wls:stateless-session-descriptor></wls:stateless-session-descriptor>
        <wls:jndi-name>QueryBean</wls:jndi-name>
    </wls:weblogic-enterprise-bean>
    <wls:weblogic-enterprise-bean>
        <wls:ejb-name>AdviceBean</wls:ejb-name>
        <wls:stateless-session-descriptor></wls:stateless-session-descriptor>
        <wls:jndi-name>AdviceBean</wls:jndi-name>
    </wls:weblogic-enterprise-bean>
</wls:weblogic-ejb-jar>


这3个Java文件和两个部署描述的XML准备好了,就可以把整个EJB项目部署到weblogic上了。

客户端的调用代码如下:
package com.bms;

import java.rmi.RemoteException;
import java.util.Properties;

import javax.ejb.CreateException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;

public class Ejb2InvocationTest {

	public static void main(String[] args) {
		Properties p = new Properties();
		p.put(Context.INITIAL_CONTEXT_FACTORY,
				"weblogic.jndi.WLInitialContextFactory");
		p.put(Context.PROVIDER_URL, "t3://localhost:7001");
		p.put(Context.SECURITY_PRINCIPAL, "weblogic");
		p.put(Context.SECURITY_CREDENTIALS, "welcome1");

		InitialContext ctx;
		try {
			ctx = new InitialContext(p);
			Object stub = ctx.lookup("AdviceBean");
			AdviceHome home = (AdviceHome) PortableRemoteObject.narrow(stub,
					AdviceHome.class);
			Advice bean = home.create();
			System.out.println(bean.advice());

		} catch (NamingException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (CreateException e) {
			e.printStackTrace();
		}

	}

}


控制台打印出“this is for EJB 2.1”。

Done!!!!!!!!!!!!!
分享到:
评论

相关推荐

    EJB 2.1入门操作实践视频

    **企业级JavaBeans(EJB)2.1详解** 企业级JavaBeans(EJB)是Java平台上用于构建可部署在企业级服务器上的组件模型。EJB 2.1是其第二个主要版本,发布于2003年,是Java EE(Java Platform, Enterprise Edition)的...

    ejb2.1 / J2EE1.4

    EJB2.1/EJ2EE 规范教程,个人觉得很不错的

    ejb 2.1 specification

    《企业JavaBeans (EJB) 2.1规格标准》:构建分布式商业应用的基石 在探讨企业级软件开发的领域内,企业JavaBeans(EJB)架构自诞生以来便成为了构建可扩展、事务处理及多用户安全的分布式业务应用程序的关键技术之...

    Eclipse xDoclet 开发EJB2.1

    【Eclipse xDoclet 开发EJB2.1】是一个关于使用Eclipse集成开发环境(IDE)配合xDoclet工具来开发Enterprise JavaBeans (EJB) 2.1版本的教程。EJB是一种Java技术,用于构建可部署在Java应用服务器上的组件,主要用于...

    EJB 2.1中实现Web Service.doc

    在EJB 2.1中实现Web Service是一个关键的技术进步,这一版本的更新主要针对了对Web Service的支持,这是由于企业级JavaBean(EJB)需要适应Web Service的需求,同时也应对了微软.NET框架的挑战。EJB 2.1通过引入一...

    FromEJB2toEJB3

    【EJB 2.1 到 EJB 3.0 迁移详解】 EJB (Enterprise JavaBeans) 是 Java 平台中用于构建分布式企业级应用程序的重要组件模型。EJB 3.0 是一个重大改进,它显著简化了EJB的开发流程,降低了对开发者的技术门槛。从 ...

    解析J2EE1.4新特性(4)-EJB2.1的新特性

    ### 解析J2EE1.4新特性(4)-EJB2.1的新特性 #### 一、EJB2.1中新特性的综述 EJB2.1(Enterprise JavaBeans 2.1规范)是Java 2 Platform Enterprise Edition (J2EE) 1.4的一部分,它带来了一系列重要的新功能和技术...

    EJB2的3本好书第3本 EJB Cookbook

    《EJB2的3本好书第3本 EJB Cookbook》是一本专注于EJB2.1实践操作的书籍,旨在帮助中级开发者快速理解和掌握EJB2.1的关键概念和最佳实践。 **EJB核心概念** 1. **会话Bean(Session Beans)**:会话Bean作为客户端...

    Xdoclet生成SessionBean 和 EntityBean代码(初识ejb)

    【Xdoclet生成SessionBean和EntityBean代码(初识ejb)】 Xdoclet是一个强大的文档生成工具,尤其在Java Enterprise Edition(JEE)环境中,它能够自动生成EJB(Enterprise JavaBeans)所需的代码和配置文件,从而...

    ejb2.rar_bmp ejb2_ejb2_ejb2 cmp b

    在 ejb2.rar_bmp ejb2_ejb2_ejb2 cmp b 这个压缩包中,我们看到的是针对EJB 2.1规范的一个登录实例,它涉及到了两种主要的实体Bean管理策略:CMP(Container-Managed Persistence,容器管理持久化)和 BMP(Bean-...

    agent-ejb-2.1.6.jar.zip

    EJB 2.1是EJB的一个早期版本,尽管在功能上不如后来的EJB 3.x简洁和灵活,但在许多遗留系统中仍然广泛使用。 "agent-ejb-2.1.6.jar"这个文件名暗示了这是一个EJB模块,其版本为2.1.6,且被封装在.jar(Java Archive...

    agent-ejb-2.1.2.jar

    标签:agent-ejb-2.1.2.jar,agent,ejb,2.1.2,jar包下载,依赖包

    精通EJB第三版

    本书是关于EJB 2.1的经典书籍,是EJB开发者必备的参考书。全书共分为3篇。第1篇对EJB编程基础进行介绍,它概要性地对EJB进行了阐述,无论是EJB初学者,还是资深EJB专家,这部分内容都值得阅读;第2篇重点关注EJB编程的具体...

    EJB 3.0无状态会话Bean应用

    该示例使用Eclipse 3.3 Europa IDE、JDK 6.0... EJB 3.0相比EJB 2.1的应用书写比较简单,配置也很简单。但是却保留了EJB 2.1强大的分布式功能,它应该未来流行的企业级应用技术。如果有问题,请mail: arklis@126.com

    EJB3.0.PDF

    1. **消除复杂接口与回调方法**:EJB2.1要求开发者创建多个接口并实现冗余的回调方法,而EJB3.0则简化了这一流程,消除了不必要的Remote、Home、EJB接口,大大减少了开发工作量。 2. **采用POJO模型**:实体Bean在...

    j2ee的项目题目关于EJBd的很不错很强大

    开发EJB 2.1应用时,首先创建一个新的EJB项目,命名为ex8ejb2,指定目标运行时环境和EJB模块版本。接着,编写组件接口(如Advice.java)和Home接口(如AdviceHome.java),它们分别扩展了EJB的相关接口。然后,实现...

    精通EJB(中文版)第三版

    本书是阐述ejb2.1的相关知识,最令人兴奋的就是ejb的规范

Global site tag (gtag.js) - Google Analytics