javaEE-EJB学习笔记
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学习笔记的更多相关文章
- EJB学习笔记
1 J2ee概述 J2ee是企业级的计算平台,它为分布式和基于组件的软件开发提供了一个“操作系统” Ant是什么工具?? EJB: 什么是EJB? 是一种server端组件结构,简化了开发分布式企 ...
- 【EJB学习笔记】——EJB开发环境搭建(Eclipse集成JBoss)
之前一直用的EJB开发环境是他们搭建好的,直接拿来用,不过还是感觉老吃别人嚼好的不太好吃,所以自己动手来玩一玩. EJB开发依赖的最基本的环境:JDK.Eclipse.JBoss,这里简单介绍一下最基 ...
- EJB学习笔记之十(BMT事务和CMT事务)
1.前言 前两篇博客主要介绍了与事务相关的知识.比如事务的一些特性,以及并发产生的问题.本篇来解说一下EJB中两种处理事务的方式.一种是以生命式方式来管理事务(CMT):还有一种则是在EJB内部使用 ...
- JavaEE JSP 学习笔记
一.JSP简介 1.也是SUN公司推出的开发动态web资源的技术,属于JavaEE技术之一.由于原理上是Servlet, 所以JSP/Servlet在一起. 二.HTML.Servlet和JSP 1. ...
- EJB学习笔记六(EJB中的拦截器)
1.前言 听到拦截器,预计都不陌生,尤其是在Servlet规范中,充分应用了拦截器的概念.EJB3也提供了拦截器的支持,本质上是轻量级的AOP实现.拦截器能够将多个业务方法中的通用逻辑从业务方法中抽 ...
- JavaEE Servlet 学习笔记
一.Servlet概述 1.什么是Servlet Servlet是一个运行在服务器端的Java小程序,通过HTTP协议用于接收来自客户端请求,并发出响应. 2.Servlet中的方法 public v ...
- JavaEE精英进阶课学习笔记《博学谷》
JavaEE精英进阶课学习笔记<博学谷> 第1章 亿可控系统分析与设计 学习目标 了解物联网应用领域及发展现状 能够说出亿可控的核心功能 能够画出亿可控的系统架构图 能够完成亿可控环境的准 ...
- Java架构师之路 Spring学习笔记(一) Spring介绍
前言 这是一篇原创的Spring学习笔记.主要记录我学习Spring4.0的过程.本人有四年的Java Web开发经验,最近在面试中遇到面试官总会问一些简单但我不会的Java问题,让我觉得有必要重新审 ...
- Spring学习笔记(一)
Spring学习笔记(一) 这是一个沉淀的过程,大概第一次接触Spring是在去年的这个时候,当初在实训,初次接触Java web,直接学习SSM框架(当是Servlet都没有学),于是,养成了一个很 ...
- JAVA Web学习笔记
JAVA Web学习笔记 1.JSP (java服务器页面) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . JSP全名为Java Server Pages,中文名叫java服务器 ...
随机推荐
- 剑指offer五十六之删除链表中重复的结点
一.题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- numpy 基本使用1
Numpy是一个非常强大的库,具有大量线性代数以及大规模科学计算的方法. #-*- coding:utf-8 -*- import numpy as np #Numpy生成一维数组 a=np.arra ...
- 我的Git教程 之 初始化本地库
初始化本地库 前言:这个教程只适用于像我一样大致理解Git的原理,但是不太记得住Git命令的同学使用.所以具体原理只会提一下,具体可以参见Pro Git.同时,下面的操作需要先安装相应的Git工具,具 ...
- 江苏公务员职位表导入MySQL
USE `database`; /*Table structure for table `post` */ DROP TABLE IF EXISTS `post`; CREATE TABLE `pos ...
- 友盟在部分手机上在进程被kill的情况下接收不到推送的问题
app集成友盟推送后就能接收推送消息,即使在进程被kill的情况下也能接收.这个因为友盟有长连互保,用户设备中任何一个集成过友盟推送的app打开,即使他的app没打开也能启动push service, ...
- Android开发之漫漫长途 Ⅲ——Activity的显示之Window和View(2)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- bug、兼容性、适配问题
1.input type=“number” 在火狐上限制长度会有问题: 1.maxlength 不管用 2.正则或js匹配限制长度后,给这个input赋值时候末尾三位(有可能是几位,我遇到的是三位 ...
- flex的使用以及布局
1.添加flex属性后的区别 <style> body{ font-size:35px; } .flex-box{ display:flex; display: -webkit-flex; ...
- ID3、C4.5和CART决策树对比
ID3决策树:利用信息增益来划分节点 信息熵是度量样本集合纯度最常用的一种指标.假设样本集合D中第k类样本所占的比重为pk,那么信息熵的计算则为下面的计算方式 当这个Ent(D)的值越小,说明样本集合 ...
- 深入理解Java虚拟机:第2章 Java内存区域与内存溢出异常
目录 2.2 运行时数据区域 Java堆 方法区 虚拟机栈 本地方法栈 程序计数器 2.3 HotSpot虚拟机对象探秘 对象的创建 对象的内存布局 对象的访问定位 2.2 运行时数据区域 Jav ...