EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。 在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)

JavaEE 规范
  支持企业级应用软件的开发
  客户层:Applet、客户应用程序
  表示逻辑层:JSP、Servlet  Web容器
  业务逻辑层:EJB 构件 EJB容器
  数据库层:数据库

无状态会话Bean

为客户提供计算服务
  描述业务逻辑(计算服务、数据库查询)
  无上下文关系、不需要引用参数和数据库之外的数据
  单独的会话Bean对象是不可以共享的,它只能有一个
  客户端访问,同样一次会话也只能有一个用户
  不保存客户的任何数据状态
构件接口
  本地接口:提供给本机程序
  远程接口:提供给其他网络程序

生存周期
  容器管理Bean构件池,负责创建和实例化
  无状态会话Bean不会进行钝化(Passivate)

//远程接口
import javax.ejb.Remote;
@Remote //标注接口(标记接口...)
public interface MyNameRemote {
public String method_1( );
}
//接口的实现
import javax.ejb.Stateless;
@Stateless //标注接口:无状态Bean
public class MyNameBean implements MyNameRemote {
public String method_1( ) { return “string” }
}

专用标注(annotation)代替专用基本类、接口
  @EJB 构件引用
  @Remote 远程接口
  @Local 本地接口
  @Stateless 无状态Bean
  @Stateful 有状态Bean

有状态会话Bean

客户专用的会话Bean构件
  维护客户的数据,支持作业session处理
  案例:网上商城系统中的购物车
  特点:特定客户、特定业务的需求
  作为软件组件,为应用程序共享
注意
  有状态会话Bean的每个用户都有自己的一个实例,所以
  不同的客户对有状态会话Bean的操作不会影响对方
  如果后面需要操作某个客户的有状态会话Bean实例,必
  须在客户端缓存有状态会话Bean的引用对象
  在JSP、Servlet中通常的做法是用Session缓存

生命周期
  客户引用: 初始状态→工作状态
  长时间不用: 工作状态→挂起状态
  客户请求: 挂起状态→工作状态
  超时: 挂起状态→初始状态

//远程业务接口(AccountBeanRemote.java)
package session;
import javax.ejb.Remote;
@Remote //远程接口
public interface AccountBeanRemote {
double getBalance() throws Exception; //查余额
void deposit(double amount) throws Exception; //存款
void withdraw(double amount) throws Exception; //取款
double resetAccount();
}
package session; EJB构件的实现
import javax.ejb.Stateful;
@Stateful //有状态会话Bean
public class AccountBean implements AccountBeanRemote {
private double account =0.0;
public double getBalance() throws Exception {
return this.account; //返回余额
}
public void deposit(double amount) throws Exception {
if(amount<){ //核查输入存款数是否合理
throw new Exception("Error Amount");
}
account += amount; //累加存款
}
public void withdraw(double amount) throws Exception {
if(amount < ){ //核查输入存款数是否合理
throw new Exception("Error Amount");
}
if(account<amount){ //核查存款是否足够
throw new Exception("Account is not Enough");
}
account ‐= amount; //减除存款
}
public double resetAccount() {
this.account = 0.0;
return this.account;
}
}

上边这个是有状态会话bean的一个例子,仅供参考

javaEE-EJB学习笔记的更多相关文章

  1. EJB学习笔记

      1 J2ee概述 J2ee是企业级的计算平台,它为分布式和基于组件的软件开发提供了一个“操作系统” Ant是什么工具?? EJB: 什么是EJB? 是一种server端组件结构,简化了开发分布式企 ...

  2. 【EJB学习笔记】——EJB开发环境搭建(Eclipse集成JBoss)

    之前一直用的EJB开发环境是他们搭建好的,直接拿来用,不过还是感觉老吃别人嚼好的不太好吃,所以自己动手来玩一玩. EJB开发依赖的最基本的环境:JDK.Eclipse.JBoss,这里简单介绍一下最基 ...

  3. EJB学习笔记之十(BMT事务和CMT事务)

     1.前言 前两篇博客主要介绍了与事务相关的知识.比如事务的一些特性,以及并发产生的问题.本篇来解说一下EJB中两种处理事务的方式.一种是以生命式方式来管理事务(CMT):还有一种则是在EJB内部使用 ...

  4. JavaEE JSP 学习笔记

    一.JSP简介 1.也是SUN公司推出的开发动态web资源的技术,属于JavaEE技术之一.由于原理上是Servlet, 所以JSP/Servlet在一起. 二.HTML.Servlet和JSP 1. ...

  5. EJB学习笔记六(EJB中的拦截器)

     1.前言 听到拦截器,预计都不陌生,尤其是在Servlet规范中,充分应用了拦截器的概念.EJB3也提供了拦截器的支持,本质上是轻量级的AOP实现.拦截器能够将多个业务方法中的通用逻辑从业务方法中抽 ...

  6. JavaEE Servlet 学习笔记

    一.Servlet概述 1.什么是Servlet Servlet是一个运行在服务器端的Java小程序,通过HTTP协议用于接收来自客户端请求,并发出响应. 2.Servlet中的方法 public v ...

  7. JavaEE精英进阶课学习笔记《博学谷》

    JavaEE精英进阶课学习笔记<博学谷> 第1章 亿可控系统分析与设计 学习目标 了解物联网应用领域及发展现状 能够说出亿可控的核心功能 能够画出亿可控的系统架构图 能够完成亿可控环境的准 ...

  8. Java架构师之路 Spring学习笔记(一) Spring介绍

    前言 这是一篇原创的Spring学习笔记.主要记录我学习Spring4.0的过程.本人有四年的Java Web开发经验,最近在面试中遇到面试官总会问一些简单但我不会的Java问题,让我觉得有必要重新审 ...

  9. Spring学习笔记(一)

    Spring学习笔记(一) 这是一个沉淀的过程,大概第一次接触Spring是在去年的这个时候,当初在实训,初次接触Java web,直接学习SSM框架(当是Servlet都没有学),于是,养成了一个很 ...

  10. JAVA Web学习笔记

    JAVA Web学习笔记 1.JSP (java服务器页面) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . JSP全名为Java Server Pages,中文名叫java服务器 ...

随机推荐

  1. Binder AIDL中自定义类型传递的源码分析

    binder机制实现的IPC和共享内存的方式不同,它采取的是值拷贝的方式,即进程间传递的实体遵循Parcelable协议, Bp端负责向Parcel里写东西,Bn端负责从Parcel里读取还原,顺序是 ...

  2. (转)MySQL中show语法

    MySQL中show语法 1. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称. 2. show databases; -- ...

  3. Java学习之路(九):Map集合

    Map集合概述和特点 Map是属于java.util的一个接口Map<k,v> k:映射所维护的键的类型 v:映射值的类型 Map是将键映射到值的对象.一个映射不能包含重复的键:每个键最多 ...

  4. JavaMail之-通过邮件激活账号

    关键点就在于: 根据用户的给出的email,给这个email发送一个邮件.这个邮件中应该带有一个激活码?(32位UUID,64位UUID). 大概步骤: 1,  注册功能 - 只要用户注册成功,就给他 ...

  5. 解释mysql 语句 ——解释CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

    在我们创建mysql数据库的时候我们经常会用到这句SQL:CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ ...

  6. docker 创建tomcat镜像

    Dockerfile ############################################ # version : wenbronk/jdkiu121/tomcat8 # desc ...

  7. Nodejs学习笔记(十三)—PM2

    简介 PM2 pm2是一个内置负载均衡的node.js应用进程管理器(也支持Windows),其它的类似功能也有不少,但是感觉pm2功能更强,更值的推荐 GitHub地址:https://github ...

  8. HtmlUnit: A Simple Example: Check Yahoo Email---转载

    1. src http://www.muneebahmad.com/index.php/archives/81 package com.examples.htmlunit; import java.i ...

  9. rails中常用的插件

    config.gem "acts-as-taggable-on", :version => '1.0.19' # tag类 config.gem "papercli ...

  10. 【LeetCode题解】169_求众数(Majority-Element)

    目录 169_求众数(Majority-Element) 描述 解法一:暴力法 思路 Java 实现 Python 实现 复杂度分析 解法二:哈希表 思路 Java 实现 Python 实现 复杂度分 ...