`
阅读更多

1.EJB(企业级javaBean)——是bean组件;用于实现业务的分离(进程的分布式);底层是socket机制。

2.EJB的分类
 2.1:SessionBean——用于问答式会话,专人负责
  2.1.1:stateless——不保存会话状态,所有客户都共用一个EJB
   ×应用——登录验证、完成单一算法
  2.1.2:stateful——有会话状态,对于每个客户都产生一个EJB
   ×实现“购物车”功能,跟踪客户的流程
 2.2:EntityBean——与数据库实体打交道
  2.2.1:CMP——简单,方便,效率低;由容器自动完成
  2.2.2:BMP——编写难,效率高;由程序员编写
 2.3:MessageDriverBean——批量信息异步处理
3.EJB发展
    3.1:通过socket来实现不同进程间的信息通讯,客户端需要服务器里的类信息——容易泄露代码
 3.2:为服务器端提供接口,将接发送给客户端,避免了代码泄露——传参复杂
 3.3:在服务器端书写引用名和类、方法对应的配置文件,只传引用名。——JNDI (Java命名与目录接口)
 3.4:RMI
 3.5:容器
 
 
4.EJB的第三方插件
 4.1:Jboss——Jboss中,客户端是端口1099,web服务是端口8080
 4.2:WebLogic
 4.3:WebSpare
5.EJB代码
 5.1:Home interface ——创建EJB实例,提供生命周期管理方法。
 

//第一步:书写继承javax.ejb.EJBHome接口的接口

package com.lovo.stateless;

import java.rmi.RemoteException;

import javax.ejb.CreateException;
import javax.ejb.EJBHome;//必须继承该接口

public interface MyStatelessHome extends EJBHome{
	//create方法返回远程接口类型且抛出CreateException异常
	public MyStatelessRemote create() throws CreateException,RemoteException;
	//所有的方法都需要跑RemoteException异常
}

 
 5.2:Remote interface——定义业务方法和辅助方法
 

//第二步:书写继承接口java.rmi.RemoteException的接口

package com.lovo.stateless;

import java.rmi.RemoteException;

import javax.ejb.EJBObject;//必须继承该接口

public interface MyStatelessRemote extends EJBObject{
//所有的方法必须抛RemoteException
	public String sayHelloWorld(String name) throws RemoteException;
	
	public String sayGoodBye(String name) throws RemoteException;
	
}

 
 5.3:Bean class——实现2个接口的方法和自己的业务方法
 

//第三步:书写实现接口的EJB类


package com.lovo.stateless;

import java.rmi.RemoteException;

import javax.ejb.EJBException;
import javax.ejb.SessionBean;
//必须继承该接口,并实现回调方法:激活、钝化、移除设置会话文档
import javax.ejb.SessionContext;

/**
 * XDoclet-based session bean. The class must be declared public according to
 * the EJB specification.
 * 
 * To generate the EJB related files to this EJB: - Add Standard EJB module to
 * XDoclet project properties - Customize XDoclet configuration for your
 * appserver - Run XDoclet
 * 
 * Below are the xdoclet-related tags needed for this EJB.
 * 
 * @ejb.bean name="MyStateless" display-name="Name for MyStateless"
 *           description="Description for MyStateless"
 *           jndi-name="ejb/MyStateless" type="Stateless" view-type="remote"
 */
//类必须是public的
public class MyStatelessBean implements SessionBean {

	/** The session context */
	private SessionContext context;
//必须有一个无参构造方法
	public MyStatelessBean() {
		// TODO Auto-generated constructor stub
	}

	// 创建——根据主接口中create方法的参数和个数创建EJB
	public void ejbCreate() throws EJBException, RemoteException {

	}

	// 激活——将代码从硬盘中提取到硬盘。
	public void ejbActivate() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	// 钝化——将长时间不用的代码从内存中移动到EJB所在的硬盘。
	public void ejbPassivate() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	// 移除——清楚EJB的所有信息。
	public void ejbRemove() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	/**
	 * Set the associated session context. The container calls this method after
	 * the instance creation.
	 * 
	 * The enterprise bean instance should store the reference to the context
	 * object in an instance variable.
	 * 
	 * This method is called with no transaction context.
	 * 
	 * @throws EJBException
	 *             Thrown if method fails due to system-level error.
	 */

	public void setSessionContext(SessionContext newContext)
			throws EJBException {
		context = newContext;
	}
//	必须实现远程接口中定义的每个方法
	public String sayHelloWorld(String name) throws RemoteException {
		return name + "说:大家好,我是清晨!";
	}

	public String sayGoodBye(String name) throws RemoteException{
		return name + "说:再见了,飞扬的青春!";
	}

}

 
 5.4:配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!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>
  <enterprise-beans>
  
  <!-- 会话bean用session标签;实体bean用entity标签;消息驱动bean用message-driven标签 -->
 
    <session>
    	<ejb-name>test67stateless</ejb-name><!-- EJB对外的引用 -->
    	<home>com.lovo.stateless.MyStatelessHome</home><!--指明EJB的主接口类  -->
    	<remote>com.lovo.stateless.MyStatelessRemote</remote><!--指明EJB的远端接口类  -->
    	<ejb-class>com.lovo.stateless.MyStatelessBean</ejb-class><!--指明EJB的实现类  -->
    	<session-type>Stateless</session-type><!--指明session类型  -->
    	<transaction-type>Container</transaction-type><!--  -->
    </session>
   
    <session>
    	<ejb-name>test67stateful</ejb-name>
    	<home>com.lovo.stateful.MyStatefulHome</home>
    	<remote>com.lovo.stateful.MyStatefulRemote</remote>
    	<ejb-class>com.lovo.stateful.MyStatefulBean</ejb-class>
    	<session-type>Stateful</session-type>
    	<transaction-type>Container</transaction-type>
    </session>
  </enterprise-beans>
</ejb-jar>




<!-- 第四步:书写服务器的配置文件 -->

  

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    实战EJB 实战EJB 实战EJB

    ### 实战EJB知识点解析 #### 一、企业JavaBeans (EJB) 技术概览 **什么是企业JavaBeans技术?** 企业JavaBeans (EJB) 是Java平台上的服务器端组件模型,专为构建可扩展、可靠且跨平台的企业级应用程序而设计。...

    EJB3 PPT教程

    **EJB3(Enterprise JavaBeans 3)是Java EE(Enterprise Edition)平台中用于构建企业级应用程序的重要组件模型。这个PPT教程详细介绍了EJB3的各种核心概念和技术,旨在帮助学习者掌握EJB3的核心特性并能实际应用到...

    java的ejb.jar包

    javax.ejb.AccessLocalException.class javax.ejb.CreateException.class javax.ejb.DuplicateKeyException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb....

    Idea搭建EJB架构Demo项目源代码

    【标题】"Idea搭建EJB架构Demo项目源代码"涉及的是使用IntelliJ IDEA(简称Idea)这个强大的Java集成开发环境来构建一个基于EJB(Enterprise JavaBeans)架构的示例项目。EJB是Java EE(企业版)平台的核心部分,...

    javax.ejb.jar下载

    Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax....

    EJB中ejb-jar——xml文件说明.pdf

    EJB中ejb-jar文件配置详解 EJB(Enterprise JavaBean)是一种Java技术,用于开发企业级应用程序。EJB容器提供了许多功能,如事务处理、安全认证、资源管理等,以便开发者更方便地开发企业级应用程序。在EJB中,ejb-...

    EJB配置部署打包实例

    EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,主要用于构建可复用、安全和事务处理的服务器端应用程序。本实例将探讨EJB的配置、部署和打包过程,帮助你深入理解如何在实际项目中运用这些技术。...

    实战角度比较EJB2和EJB3的架构异同

    【实战角度比较EJB2和EJB3的架构异同】 EJB,即Enterprise JavaBeans,是Java EE(企业版Java)平台的核心组件之一,用于构建可复用、分布式的服务器端应用程序。EJB2和EJB3是EJB技术的两个主要版本,它们在架构上...

    jboss7ejb配置文件

    在Java企业版(Java EE)应用开发中,EJB(Enterprise JavaBeans)是核心组件,用于构建可扩展、安全和事务处理的服务器端应用程序。JBoss AS(现在称为WildFly)是一个开源的应用服务器,它支持Java EE规范,包括...

    javax.ejb.rar

    META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.properties META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.xml javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout....

    EJB方面 ejb pdf

    ### EJB技术详解 #### EJB 2.0与EJB 1.1的主要区别及其应用场景 EJB(Enterprise JavaBeans)技术自1998年首次推出以来,经历了多个版本的演进,其中EJB 2.0是EJB 1.1的重要升级版,带来了诸多改进和新特性,旨在...

    ejb3.0写的登陆应用

    EJB(Enterprise JavaBeans)3.0是Java企业级应用开发的一个重要版本,它极大地简化了EJB的使用,降低了开发复杂性,并引入了许多新特性。在这个“ejb3.0写的登陆应用”中,我们可以深入探讨EJB 3.0在实现登录应用中...

    ejb2.0与ejb3.0的区别

    ### EJB2.0与EJB3.0的主要区别 #### 一、简介 企业Java Beans(EJB)是Java平台为企业级应用提供的一种组件模型。随着技术的发展,EJB经历了多个版本的迭代,其中EJB 2.0和EJB 3.0是两个重要的里程碑版本。本文将...

    JSP + EJB + Servlet 实例

    使用原始的servlet操作熟悉EJB的实体管理。 本实例主要功能:实现对员工、角色、账号、部门的关系管理。 本实例的实体设计:部门-员工:一对多。员工-账号:一对一。账号-角色:一对一。 主要采用EJB进行会话管理。...

    EJB3.0__EJB3.0

    EJB(Enterprise JavaBeans)是Java EE(Enterprise Java Platform)平台的一部分,主要用于构建分布式、事务处理、多客户端支持以及安全的后端企业级应用。EJB3.0是EJB规范的一个重要版本,它引入了许多简化开发的...

    EJB计算个人所得税

    【EJB计算个人所得税】 企业级JavaBean(Enterprise JavaBeans,简称EJB)是Java平台上的一个核心组件,用于构建可扩展、安全且事务管理的分布式应用程序。在本项目"计算个人所得税"中,EJB被用作后端服务,处理...

    EJB集群EJB集群资料

    EJB集群是EJB技术的一个重要特性,它允许EJB容器(如JBOSS)在多台服务器上分布和复制EJB实例,以实现高可用性和负载均衡。 在给定的示例中,我们看到一个简单的无状态会话Bean(Stateless Session Bean)`...

    EJB原理图:EJB工作原理

    ### EJB原理图详解 #### 一、EJB工作原理概览 EJB(Enterprise JavaBeans)是Java EE平台中的一个重要组成部分,它主要用于构建企业级应用。EJB提供了一种面向服务的方式,允许开发者专注于业务逻辑,而将复杂的...

    JavaEE5学习笔记05-EJB之会话Bean总结

    ### JavaEE5学习笔记05-EJB之会话Bean总结 #### EJB(Enterprise JavaBeans)简介 EJB(Enterprise JavaBeans)是Java EE平台的一部分,用于开发和部署可重用的服务组件。EJB规范定义了如何编写、部署以及管理企业...

    EJB3.0规范-EJB3.0 SPECIFICATION

    EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件模型,主要用于构建可复用的、分布式的、事务处理的企业级应用程序。EJB3.0规范是Java EE 5中的一个重要组成部分,它对之前的EJB版本进行了重大改进,极...

Global site tag (gtag.js) - Google Analytics