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. java命令行编译和运行引用jar包的文件

    经常遇到需要添加第三方jar文件的情况.在命令行状态下要加载外部的jar文件非常麻烦,很不好搞,在网上折腾了很久终于搞定了,在这里做个笔记: 2.运行:java -Djava.ext.dirs=./l ...

  2. VS2015 未能正确加载 JavascriptWebExtensionsPackage

    解决方法: Close Visual Studio Open the %UserProfile%\AppData\Local\Microsoft\VisualStudio\<version> ...

  3. BugFree3.0.4Linux环境安装指南

    bugfree安装的前提是配置LAMP(apache+mysql+php),我安装的linux系统是centos6.0 一.安装Apache服务器 1.安装apache yum install htt ...

  4. wp-postviews使用方法

    1.安装 2.头部引用<?php wp_head(); ?> 3.文章调用:<?php if(function_exists('the_views')) { the_views(); ...

  5. Python -- Gui编程 -- Win32API的使用

    消息框 messageBox.py import win32api, win32con win32api.MessageBox(0, 'Hello World!', 'Come Here', win3 ...

  6. mongodb 错误 SCRAM-SHA-1 authentication failed for --转

    log 日志错误信息 2018-10-24T16:14:42.244+0800 I NETWORK [initandlisten] connection accepted from 192.168.1 ...

  7. KafkaOffsetMonitor监控kafka

    KafkaOffsetMonitor监控kafka 1. KafkaOffsetMonitor是一个可以用于监控Kafka的Topic及Consumer消费状况的工具,其配置和使用特别的方便.源项目G ...

  8. 用java实现一个简易编译器-语法解析

    语法和解析树: 举个例子看看,语法解析的过程.句子:“我看到刘德华唱歌”.在计算机里,怎么用程序解析它呢.从语法上看,句子的组成是由主语,动词,和谓语从句组成,主语是“我”,动词是“看见”, 谓语从句 ...

  9. golang基础--细说defer

    defer 匿名函数特性 执行方式类似其它语言中的析构函数,在函数体执行结束后按照调用顺序的相反顺序逐个执行 //执行顺序相反 package main import "fmt" ...

  10. Linux进程管理四大工具ps \dstat\ top\ htop

    Linux进程管理之“四大名捕” 一.四大名捕 四大名捕,最初出现于温瑞安创作的武侠小说,是朝廷中正义力量诸葛小花的四大徒弟,四人各怀绝技,分别是轻功暗器高手“无情”.内功卓越的高手“铁手”.腿功惊人 ...