- 浏览: 2542164 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
EJB基础笔记(一)
第一章 教程提示
第二章 EJB技术概述
2.1 简介
2.2 两层和三层环境
Two-tier Computing Environments: Application -----------network--------> Database Server
三层 客户机-------》应用程序服务器--------》数据库服务器
第三章 EJB规范
3.2 EJB容器
容器容纳和管理 Enterprise Bean
Java Web 服务器容纳 Servlet
HTML浏览器容纳 Java Applet
EJB 容器在运行时管理 Enterprise Bean 的各个方面,包括远程访问 bean、安全性、持续、事务、并行性和资源的访问与合用。
EJB Container >Transaction Management
>Persistence Management
>Security Management
>EJBContext, JNDI ENC
>Callback Methods
由于客户机应用程序不能直接访问 bean -- 容器位于客户机和 bean 之间。
Enterprise Bean 通过以下三种机制之一与容器交互:
回调方法
每个 bean 都会实现 EnterpriseBean 接口的子类型,该接口定义了一些方法,称作回调方法。每个回调方法在 bean 的生命周期期间向它提示一个不同事件,当容器要合用某个 bean、将其状态存储到数据库、结束事务、从内存中除去该 bean 等操作时,它将调用这些方法来通知该 bean。回调方法可以让 bean 在事件之前或之后立即执行内部调整。
EJBContext接口
每个 bean 都会得到一个 EJBContext 对象,它是对容器的直接引用。EJBContext 接口提供了用于与容器交互的方法,因此那个 bean 可以请求关于环境的信息,如其客户机的身份或事务的状态,或者 bean 可以获取它自身的远程引用。
Java 命名和目录接口 (JNDI)
JNDI 是 Java 平台的标准扩展,用于访问命名系统,如 LDAP、NetWare、文件系统等。每个 bean 自动拥有对某个特定命名系统(称作环境命名上下文 (ENC))的访问权。ENC 由容器管理,bean 使用 JNDI 来访问 ENC。JNDI ENC 允许 bean 访问资源,如 JDBC 连接、其它 Enterprise Bean,以及特定于该 bean 的属性。
3.5 远程和本地接口
远程和本地接口分别扩展 javax.ejb.EJBObject 和 javax.ejb.EJBHome 接口。这些 EJB 接口类型定义了一组标准的实用程序方法,并为所有远程和本地接口提供了常用基本类型。
Remote Interface:java.rmi.Remote ----->javax.ejb.EJBObject ------->Customer
Home Interface: java.rmi.Remote ----->javax.ebj.EJBHome -------->CustomerHome
CustomerHome home = // ... obtain a reference that implements the home interface.
// Use the home interface to create a
// new instance of the Customer bean.
Customer customer = home.create(customerID);
// using a business method on the Customer.
customer.setName(someName);
The customer interface:
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Customer extends EJBObject {
public Name getName() throws RemoteException;
public void setName(Name name) throws RemoteException;
public Address getAddress() throws RemoteException;
public void setAddress(Address address) throws RemoteException;
}
实体 Bean,它表示持久商业对象(数据存储在数据库中的商业对象)。实体 Bean 表示数据库中的商业数据,并添加特定于该数据的行为。
会话 Bean
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface HotelClerk extends EJBObject {
public void reserveRoom(Customer cust, RoomInfo ri, Date from, Date to)
throws RemoteException;
public RoomInfo availableRooms(Location loc, Date from, Date to)
throws RemoteException;
}
HotelClerk bean 充当代理程序,因为它代表用户执行任务,但它自己在数据库中并不是持久的。您不需要有关 HotelClerk 的信息;您需要旅馆店员为您执行任务。这是会话 Bean 的典型行为。
实体Bean
import javax.ejb.EntityBean;
public class CustomerBean implements EntityBean {
Address myAddress;
Name myName;
CreditCard myCreditCard;
snip getter and setter
...
}
Bean Class : javax.ejb.EnterpriseBean -- > javax.ejb.EntityBean -- > CustomerBean
3.9 生命周期方法
import javax.ejb.EJBHome;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import java.rmi.RemoteException;
public interface CustomerHome extends EJBHome {
public Customer create(Integer customerNumber) throws RemoteException, CreateException;
public Customer findByPrimaryKey(Integer customerNumber) throws RemoteException, FinderException;
public Enumeration findByZipCode(int zipCode) throws RemoteException, FinderException;
}
create() 方法用于创建新的实体。这将在数据库中产生新的记录。本地接口可能有许多 create() 方法。每个 create() 的自变量数量和数据类型由 bean 开发人员指定,但返回类型必须是远程接口数据类型。这种情况下,在 CustomerHome 接口上调用 create() 将返回 Customer 的实例。
第四章 实体Bean
实体Bean: 容器管理的持续(CMP) bean管理的持续(BMP)
容器管理的持续
容器管理的字段可以是任何原语数据类型或可串行化类型。本例中使用原语 int (customerID) 和可串行化对象(Address、Name、CreditCard)。
4.4 本地接口
public interface CustomerHome extends javax.ejb.EJBHome {
public Customer create(Integer customerNumber) throws RemoteException,CreateException;
public Customer create(Integer customerNumber, Name name) throws RemoteException,CreateException;
public Customer findByPrimaryKey(Integer customerNumber) throws RemoteException, FinderException;
public Enumeration findByZipCode(int zipCode) throws RemoteException, FinderException;
}
调用本地接口示例:
CustomerHome home = // Get a reference to the CustomerHome object
Name name = new Name("John", "W", "Smith");
Customer customer = home.create(new Integer(33), name);
4.5 远程接口
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Customer extends EJBObject {
public Name getName() throws RemoteException;
public void setName(Name name) throws RemoteException;
public Address getAddress() throws RemoteException;
public void setAddress(Address address) throws RemoteException;
public CreditCard getCreditCard() throws RemoteException;
public void setCreditCard(CreditCard card) throws RemoteException;
}
远程接口调用示例:
Customer customer = // ... obtain a remote reference to the bean
// get the customer's address
Address addr = customer.getAddress();
// change the zip code
addr.zip = "56777";
// update the customer's address
customer.setAddress(addr);
4.6 回调方法
回调方法在 javax.ejb.EntityBean 接口中定义,此接口由所有实体 Bean 实现,包括 CustomerBean 类。
public interface javax.ejb.EntityBean {
public void setEntityContext();
public void unsetEntityContext();
public void ejbLoad();
public void ejbStore();
public void ejbActivate();
public void ejbPassivate();
public void ejbRemove();
}
使用回调方法的CustomerBean:
import javax.ejb.EntityBean;
public class CustomerBean implements EntityBean {
int customerID;
Address myAddress;
Name myName;
CreditCard myCreditCard;
EntityContext ejbContext;
// CALLBACK METHODS
public void setEntityContext(EntityContext cntx) {
ejbContext = cntx
}
// BUSINESS METHODS
public void setCreditCard(CreditCard card) {
if (card.type.equals("WorldWide"))
if (ejbContext.isCallerInRole("Manager"))
myCreditCard = card;
else
throw new SecurityException();
else
myCreditCard = card;
}
...snip...
4.8 Bean管理的持续
bean 使用数据库 API(通常是 JDBC)来读取其字段并将字段写入数据库,但容器会告诉它何时执行每个同步操作,并会自动管理 bean 的事务。bean 管理的持续可以让 bean 开发人员灵活地执行对于容器来说太过于复杂的持续操作,或者使用容器不支持的数据源 -- 例如,定制或旧的数据库。
public class CustomerBean_BMP extends CustomerBean {
public void ejbLoad() {
// override implementation
}
public void ejbStore() {
// override implementation
}
public void ejbCreate() {
// override implementation
}
public void ejbRemove() {
// override implementation
}
private Connection getConnection() {
// new helper method
}
}
ejbLoad() 和 ejbStore() 方法必须包括数据库访问逻辑,只有这样,当 EJB 告诉 bean 要装入和存储数据时,它才能这么做。容器会在适当时自动执行 ejbLoad() 和 ejbStore() 方法。
ejbCreate() 方法将新记录插入数据库,而 ejbRemove() 方法从数据库中删除实体的数据。
获得ID Integer primaryKey = (Integer)ejbContext.getPrimaryKey();
第一章 教程提示
第二章 EJB技术概述
2.1 简介
2.2 两层和三层环境
Two-tier Computing Environments: Application -----------network--------> Database Server
三层 客户机-------》应用程序服务器--------》数据库服务器
第三章 EJB规范
3.2 EJB容器
容器容纳和管理 Enterprise Bean
Java Web 服务器容纳 Servlet
HTML浏览器容纳 Java Applet
EJB 容器在运行时管理 Enterprise Bean 的各个方面,包括远程访问 bean、安全性、持续、事务、并行性和资源的访问与合用。
EJB Container >Transaction Management
>Persistence Management
>Security Management
>EJBContext, JNDI ENC
>Callback Methods
由于客户机应用程序不能直接访问 bean -- 容器位于客户机和 bean 之间。
Enterprise Bean 通过以下三种机制之一与容器交互:
回调方法
每个 bean 都会实现 EnterpriseBean 接口的子类型,该接口定义了一些方法,称作回调方法。每个回调方法在 bean 的生命周期期间向它提示一个不同事件,当容器要合用某个 bean、将其状态存储到数据库、结束事务、从内存中除去该 bean 等操作时,它将调用这些方法来通知该 bean。回调方法可以让 bean 在事件之前或之后立即执行内部调整。
EJBContext接口
每个 bean 都会得到一个 EJBContext 对象,它是对容器的直接引用。EJBContext 接口提供了用于与容器交互的方法,因此那个 bean 可以请求关于环境的信息,如其客户机的身份或事务的状态,或者 bean 可以获取它自身的远程引用。
Java 命名和目录接口 (JNDI)
JNDI 是 Java 平台的标准扩展,用于访问命名系统,如 LDAP、NetWare、文件系统等。每个 bean 自动拥有对某个特定命名系统(称作环境命名上下文 (ENC))的访问权。ENC 由容器管理,bean 使用 JNDI 来访问 ENC。JNDI ENC 允许 bean 访问资源,如 JDBC 连接、其它 Enterprise Bean,以及特定于该 bean 的属性。
3.5 远程和本地接口
远程和本地接口分别扩展 javax.ejb.EJBObject 和 javax.ejb.EJBHome 接口。这些 EJB 接口类型定义了一组标准的实用程序方法,并为所有远程和本地接口提供了常用基本类型。
Remote Interface:java.rmi.Remote ----->javax.ejb.EJBObject ------->Customer
Home Interface: java.rmi.Remote ----->javax.ebj.EJBHome -------->CustomerHome
CustomerHome home = // ... obtain a reference that implements the home interface.
// Use the home interface to create a
// new instance of the Customer bean.
Customer customer = home.create(customerID);
// using a business method on the Customer.
customer.setName(someName);
The customer interface:
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Customer extends EJBObject {
public Name getName() throws RemoteException;
public void setName(Name name) throws RemoteException;
public Address getAddress() throws RemoteException;
public void setAddress(Address address) throws RemoteException;
}
实体 Bean,它表示持久商业对象(数据存储在数据库中的商业对象)。实体 Bean 表示数据库中的商业数据,并添加特定于该数据的行为。
会话 Bean
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface HotelClerk extends EJBObject {
public void reserveRoom(Customer cust, RoomInfo ri, Date from, Date to)
throws RemoteException;
public RoomInfo availableRooms(Location loc, Date from, Date to)
throws RemoteException;
}
HotelClerk bean 充当代理程序,因为它代表用户执行任务,但它自己在数据库中并不是持久的。您不需要有关 HotelClerk 的信息;您需要旅馆店员为您执行任务。这是会话 Bean 的典型行为。
实体Bean
import javax.ejb.EntityBean;
public class CustomerBean implements EntityBean {
Address myAddress;
Name myName;
CreditCard myCreditCard;
snip getter and setter
...
}
Bean Class : javax.ejb.EnterpriseBean -- > javax.ejb.EntityBean -- > CustomerBean
3.9 生命周期方法
import javax.ejb.EJBHome;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import java.rmi.RemoteException;
public interface CustomerHome extends EJBHome {
public Customer create(Integer customerNumber) throws RemoteException, CreateException;
public Customer findByPrimaryKey(Integer customerNumber) throws RemoteException, FinderException;
public Enumeration findByZipCode(int zipCode) throws RemoteException, FinderException;
}
create() 方法用于创建新的实体。这将在数据库中产生新的记录。本地接口可能有许多 create() 方法。每个 create() 的自变量数量和数据类型由 bean 开发人员指定,但返回类型必须是远程接口数据类型。这种情况下,在 CustomerHome 接口上调用 create() 将返回 Customer 的实例。
第四章 实体Bean
实体Bean: 容器管理的持续(CMP) bean管理的持续(BMP)
容器管理的持续
容器管理的字段可以是任何原语数据类型或可串行化类型。本例中使用原语 int (customerID) 和可串行化对象(Address、Name、CreditCard)。
4.4 本地接口
public interface CustomerHome extends javax.ejb.EJBHome {
public Customer create(Integer customerNumber) throws RemoteException,CreateException;
public Customer create(Integer customerNumber, Name name) throws RemoteException,CreateException;
public Customer findByPrimaryKey(Integer customerNumber) throws RemoteException, FinderException;
public Enumeration findByZipCode(int zipCode) throws RemoteException, FinderException;
}
调用本地接口示例:
CustomerHome home = // Get a reference to the CustomerHome object
Name name = new Name("John", "W", "Smith");
Customer customer = home.create(new Integer(33), name);
4.5 远程接口
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Customer extends EJBObject {
public Name getName() throws RemoteException;
public void setName(Name name) throws RemoteException;
public Address getAddress() throws RemoteException;
public void setAddress(Address address) throws RemoteException;
public CreditCard getCreditCard() throws RemoteException;
public void setCreditCard(CreditCard card) throws RemoteException;
}
远程接口调用示例:
Customer customer = // ... obtain a remote reference to the bean
// get the customer's address
Address addr = customer.getAddress();
// change the zip code
addr.zip = "56777";
// update the customer's address
customer.setAddress(addr);
4.6 回调方法
回调方法在 javax.ejb.EntityBean 接口中定义,此接口由所有实体 Bean 实现,包括 CustomerBean 类。
public interface javax.ejb.EntityBean {
public void setEntityContext();
public void unsetEntityContext();
public void ejbLoad();
public void ejbStore();
public void ejbActivate();
public void ejbPassivate();
public void ejbRemove();
}
使用回调方法的CustomerBean:
import javax.ejb.EntityBean;
public class CustomerBean implements EntityBean {
int customerID;
Address myAddress;
Name myName;
CreditCard myCreditCard;
EntityContext ejbContext;
// CALLBACK METHODS
public void setEntityContext(EntityContext cntx) {
ejbContext = cntx
}
// BUSINESS METHODS
public void setCreditCard(CreditCard card) {
if (card.type.equals("WorldWide"))
if (ejbContext.isCallerInRole("Manager"))
myCreditCard = card;
else
throw new SecurityException();
else
myCreditCard = card;
}
...snip...
4.8 Bean管理的持续
bean 使用数据库 API(通常是 JDBC)来读取其字段并将字段写入数据库,但容器会告诉它何时执行每个同步操作,并会自动管理 bean 的事务。bean 管理的持续可以让 bean 开发人员灵活地执行对于容器来说太过于复杂的持续操作,或者使用容器不支持的数据源 -- 例如,定制或旧的数据库。
public class CustomerBean_BMP extends CustomerBean {
public void ejbLoad() {
// override implementation
}
public void ejbStore() {
// override implementation
}
public void ejbCreate() {
// override implementation
}
public void ejbRemove() {
// override implementation
}
private Connection getConnection() {
// new helper method
}
}
ejbLoad() 和 ejbStore() 方法必须包括数据库访问逻辑,只有这样,当 EJB 告诉 bean 要装入和存储数据时,它才能这么做。容器会在适当时自动执行 ejbLoad() 和 ejbStore() 方法。
ejbCreate() 方法将新记录插入数据库,而 ejbRemove() 方法从数据库中删除实体的数据。
获得ID Integer primaryKey = (Integer)ejbContext.getPrimaryKey();
发表评论
-
Update Site will come soon
2021-06-02 04:10 1672I am still keep notes my tech n ... -
Portainer 2020(4)Deploy Nginx and Others
2020-03-20 12:06 422Portainer 2020(4)Deploy Nginx a ... -
Private Registry 2020(1)No auth in registry Nginx AUTH for UI
2020-03-18 00:56 428Private Registry 2020(1)No auth ... -
Docker Compose 2020(1)Installation and Basic
2020-03-15 08:10 364Docker Compose 2020(1)Installat ... -
VPN Server 2020(2)Docker on CentOS in Ubuntu
2020-03-02 08:04 444VPN Server 2020(2)Docker on Cen ... -
Nginx Deal with OPTIONS in HTTP Protocol
2020-02-15 01:33 346Nginx Deal with OPTIONS in HTTP ... -
PDF to HTML 2020(1)pdftohtml Linux tool or PDFBox
2020-01-29 07:37 399PDF to HTML 2020(1)pdftohtml Li ... -
Elasticsearch Cluster 2019(2)Kibana Issue or Upgrade
2020-01-12 03:25 710Elasticsearch Cluster 2019(2)Ki ... -
Spark Streaming 2020(1)Investigation
2020-01-08 07:19 291Spark Streaming 2020(1)Investig ... -
Hadoop Docker 2019 Version 3.2.1
2019-12-10 07:39 288Hadoop Docker 2019 Version 3.2. ... -
MongoDB 2019(3)Security and Auth
2019-11-16 06:48 236MongoDB 2019(3)Security and Aut ... -
MongoDB 2019(1)Install 4.2.1 Single and Cluster
2019-11-11 05:07 286MongoDB 2019(1) Follow this ht ... -
Monitor Tool 2019(1)Monit Installation and Usage
2019-10-17 08:22 320Monitor Tool 2019(1)Monit Insta ... -
Ansible 2019(1)Introduction and Installation on Ubuntu and CentOS
2019-10-12 06:15 305Ansible 2019(1)Introduction and ... -
Timezone and Time on All Servers and Docker Containers
2019-10-10 11:18 328Timezone and Time on All Server ... -
Kafka Cluster 2019(6) 3 Nodes Cluster on CentOS7
2019-10-05 23:28 273Kafka Cluster 2019(6) 3 Nodes C ... -
K8S Helm(1)Understand YAML and Kubectl Pod and Deployment
2019-10-01 01:21 316K8S Helm(1)Understand YAML and ... -
Rancher and k8s 2019(5)Private Registry
2019-09-27 03:25 352Rancher and k8s 2019(5)Private ... -
Jenkins 2019 Cluster(1)Version 2.194
2019-09-12 02:53 438Jenkins 2019 Cluster(1)Version ... -
Redis Cluster 2019(3)Redis Cluster on CentOS
2019-08-17 04:07 365Redis Cluster 2019(3)Redis Clus ...
相关推荐
在深入探讨《ejb学习笔记》这一主题之前,我们首先需要理解什么是EJB(Enterprise JavaBeans)。EJB是Java平台为企业级应用开发提供的一套组件模型,它属于J2EE(Java 2 Platform, Enterprise Edition)的一部分,...
1. EJB的基础概念和架构。 2. 如何创建和部署EJB组件,包括编写bean的类、接口、XML配置文件等。 3. EJB的生命周期管理,包括实例化、初始化、激活、钝化、Passivation和销毁。 4. 事务管理,EJB如何支持声明式和...
Weblogic EJB 学习笔记主要涵盖了EJB(Enterprise JavaBeans)的基础知识,包括无状态会话bean、有状态会话bean和实体bean这三种主要的EJB类型,以及EJB在Weblogic服务器中的配置和事务管理。 1. **无状态会话bean*...
【EJB学习笔记2】 EJB,全称Enterprise JavaBeans,是Java EE(现在被称为Jakarta EE)平台的一部分,主要用于构建可复用的、安全的、可伸缩的服务器端应用程序。EJB标准定义了一组规范,使得开发者可以创建分布式...
EJB3是EJB规范的一个重要版本,它在EJB2的基础上进行了许多简化和改进,使得开发更加方便,同时也保留了强大的企业级功能。本笔记代码主要涵盖了EJB3的一些核心特性,包括定时任务(timer)、会话bean(session)、...
【EJB学习笔记】 EJB,全称为Enterprise Java Beans,是Java平台上的一个标准,用于开发和部署服务器端的分布式组件。它基于Java语言,为创建高效能、安全且可扩展的企业级应用提供了框架。EJB规范由Java ...
在"学习EJB3基础知识笔记"中,我们将深入探讨EJB3的主要特性和使用方法。 1. **注解驱动的编程模型**: EJB3引入了注解,极大地减少了XML配置文件的使用。通过在实体类、接口或实现类上添加注解,如`@Entity`、`@...
【EJB学习笔记】 EJB(Enterprise JavaBeans)是Java EE平台的核心组成部分,主要用于构建分布式、面向服务的企业级应用程序。EJB技术旨在解决多层架构体系中的问题,尤其是在服务器端计算场景下的应用。 1. **...
#### EJB基础知识概览 ##### 1. 无状态会话Bean (Stateless Session Bean) 无状态会话Bean是一种不保存客户端会话状态的EJB组件。这意味着每个客户端的请求都不依赖于前一个请求的状态。 - **优点**: - **高效...
### EJB学习笔记知识点梳理 #### 一、EJB概览 **EJB**(Enterprise JavaBeans)是一种Java EE技术,用于开发、部署服务器端的分布式应用组件。它旨在简化企业级应用程序的开发过程,通过将复杂的底层服务(如事务...
本笔记旨在为热衷于EJB技术的开发者提供全面的基础知识,帮助理解EJB的基本概念、架构以及在实际项目中的应用。 首先,我们从EJB(day01).txt开始,第一天的笔记主要介绍了EJB的基本概念。EJB是Java EE(Java ...
### EJB基础知识与编程方法详解 #### 一、EJB概念与原理 ##### 1. 什么是EJB EJB(Enterprise JavaBeans)是Java平台的一种企业级组件模型标准,用于构建可重用的企业级应用组件。它由Sun Microsystems制定,并...
**EJB3.0 学习笔记** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的分布式应用程序。EJB3.0是EJB的一个重大更新,引入了许多改进,使得开发过程更为简化,降低了...
EJB 3.0 版本在之前的版本基础上进行了大量的改进,简化了开发流程,提高了开发效率,同时也增强了其在事务处理、安全性及性能方面的表现。 #### 二、EJB 的类型与功能 EJB 定义了三种主要的企业Bean: 1. **会话...
5. 实体基础:理解JPA(Java Persistence API),它是EJB中处理数据持久化的标准。 6. 消息服务:涉及JMS(Java Message Service)和MDB(Message-Driven Bean),了解异步通信机制。 7. EJB增强功能:包括Bean的...
EJB,全称为Enterprise JavaBeans,是Java平台上用于构建企业级应用的一种组件模型。它由Sun Microsystems(现已被Oracle收购)在1990年代末推出,旨在提供一种规范化的、面向服务的、可扩展的服务器端计算环境,...