软件构件与中间件技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
41
Ejb部件之八 供应商文件
Weblogic Jboss Websphere 特定容器的特定描述 Ejb-weblogic.xml? Ejb-websphere.xml? 告诉容器额外的信息
42
Ejb部件之九 ejb-jar文件
Home接口/ 对象 本地接口/ 对象*
Ejb的实际类
Weblogic等服务器的部署文件 至少五个部份组成一个ejb,打包成jar后发布到服务器12
EJB可以做哪些业务内容?
执行商务逻缉(算算税收,图书过期罚 款等) 数据库存取(通过jdbc),取指定图书, 计算某本书的借书量 访问其它系统,比如erp
13
谁?怎么使用EJB?
30
远程接口
EJB类,缩在里面 不给用户看见 放核心逻辑
EJB结构
Ejb对象,表现给用户看 这个对象由系统生成
EJB类(核心逻辑) 包括:void 罚款(…)业务 客户看不见
31
Ejb组成3 远程接口
远程接口,EJB提供者写,表明
1 给用户看见多少业务方法 2 实现哪些系统方法 Public interface javax.ejb.EJBObject { getEJBHome,getHandle,..) Ejb对象,表现给用户看 这个对象由系统生成
24
隐式中间件非常简单
要算罚款么?代码只要写 计算罚款 结束. 那么,安全检查,事务,数据库这些东 西还做不做呢?
25
隐式中间件
处理事务 client object 处理安全
远程接口
请求拦截者 skeleton
连接数据库
stub
net
请求拦截者做安全, 事务,数据库 怎么做由描述文件 来指定.
软件构件与中间件技术
cb@zjut.edu.cn
1
什么是EJB?
Enterprise Java Bean 开发EJB的目的 易于扩展,健壮并安全的应用程序
2
传统多层应用程序
client client client
server
server
db
3
企业级程序特点
大量硬件和应用程序通过网络互连 应用程序在网络间共享(网络调用)
网络连接 胖客户 (Applet /application) 瘦客户 Servlet/jsp SOAP,WSDL 企业客户 Web service EJBS
14
EJBS
EJBS
回顾:EJB的角色
工具提供者 系统集成者 部署者 Bean提供者
管理维护者
Ejb容器提供者
15
j2ee中间件必须支持的API
40
Ejb部件之七 部署描述
安全性,事务,数据库都交给容器了,用户不 必要编码. 但必须告诉容器,处理的方式 Xml来告诉容器,称为部署描述 Bean的生命期,安全性,事务都在xml里面指 定 和web.xml有点象.Web.xml描述web应用程 序,这里是ejb-jar.xml描述.和web.xml是同 一级的
Ejb对象和远程接口都在远程机器上 Ejb被ejb对象和远程接口封装了 远程机器上的远程接口表现了ejb的行为 可是,客户在本地..怎么办?
Remote接口 client
?
Ejb Ejbobject
34
位置透明
Ejb可以存在任何一台机器上 http://127.0.0.1/ejb名,这种形式不灵活 所以用到JNDI,要找一个ejb您必须: 1连接到JNDI服务器 2查到ejb名字,再取得引用 3把引用返回给客户 4客户创建一个ejb实例
35
Home对象的目的
Home对象负责在本地: 生成ejb实例 删除ejb实例 生成和删除和容器紧密相关,所以 Home对象由系统生成(容器)
36
EJB部件之五:Home接口
Home对象用户看不见 创建ejb 实例的时候,需要参数初始化 参数通过Home接口传给容器,然后传给 Home对象,然后给远程接口 Home接口用于 指明定义,生成,回收查找ejb实例 具体工作由Home对象来做
50
Step4 产生的结果看一看
Home接口 TestSesHome.class
Remote接口
打包文件 Ejb本身 应用程序配置
zengejb/TestSes.class
META-INF/ejb-jar.xml zengejb/TestSesBean.class
META-INF/weblogic-ejb-jar.xml
22
使用显式中间件的代码
调用安全检查 启动事务 从数据库装数据 数据计算罚款 向数据库写数据 结束事务 注销用户
23
显式中间件对用户要求过高
显式中间件有 Tuxedo 和CICS(weblogic里专门有 tuxedo连接器) 程序必须清楚中间件的api 程序员脑子要爆炸了..
49
Step3 自动产生jar文件
在project上选择Make,等啊等啊。。 成功乐!双击jar文件。。 anifest-Version: 1.0 zengejb/TestSesHome.class//home接口 Name: META-INF/ejb-jar.xml//部署文件 Name: zengejb/TestSes.class//ejb对象 Name: META-INF/weblogic-ejb-jar.xml//应用 Name: zengejb/TestSesBean.class//逻缉类 这些是什么?全部自动产生,爽啊
48
Step2:给ejb加入商务逻缉方法
右击testSes,add ,method加入方法,方法名 是getName,返回String,然后接口类型是 Remote(对象自己的) 双击左栏的testSesBean文件名,打开这个 bean 这就是核心bean,继承sessionBean,方法 getName改成public java.lang.String getName() { return “你写欢迎的话吧!";}
EJB RMI JNDI JDBC JTA JMS JSP/SERVLET XML JAAS
16
EJB基础结构
Ejb的完整组成部份是 Ejb类, 远程接口和ejb对象 本地接口和本地对象 Home接口和Home对象
部署描述文件 Ejb-jar文件
6
自行开发中间件的问题
各人开发各人的,标准不统一,不兼容 开发难度大,周期太长,不符合需要 J2EE容器是一个合适的,标准化的 中间件
7
EJB是中间件体系的一部份
EJB是什么? 一个EJB是由java开发的,可以部署 的,服务器端的组件 EJB体系指的是这些组件组成的体系 结构,由j2ee容器支持
51
Step5 配置并在jbuilder内部运 行weblogic(保持运行)
项目右键,run中选择server。 Run-选择server,server就在jbuilder内 部启动。
37
Home接口和对象
Home对象 Home 接口 事务 安全 数据库
EJB对象 Remote 接口 拦截器
Ejb核心类
38
39
Ejb部件六本地对象和本地接口
Ejb的调用过程本质上还是通过stubskeleton的. 通过网络连接比较费时 本地调试时用EJBLocalHome代替 EJBHome,不通过网络连接本机 牺牲了所有的分布网络特性,调试时用
17
EJB类型(老生常谈)
Session Bean会话bean,动词. 处理动作:计算价格,计算罚款等 Entity Bean实体bean.名词.是数据库 数据的java对象表示 MessageBean 也代表动作,只不过只 有发消息才能驱动它们.
18
分布式对象(非常重要)
client 远程机器 i 被调用的对象
Remote接口/ EJB对象
部署描述xml
Ejb-jar
EJB核心类
厂商描述xml
43
出卖/购买ejb
一个Ejb-jar文件打了包卖 每个bean单独卖 单独卖了以后卖服务,帮用户组装部署 赚钱中...
44
说了这么多,复习!
Ejb核心类/实例 Remote接口和EJB对象 Home接口和Home对象 本地接口和本地对象 部署描述文件 供应商文件 Ejb-jar文件
远程接口 映射 远程接口 代理 stub 本地机器 TCP /IP 网络
skeleton
远程机器1
19
20
显式中间件
处理事务 client object 处理安全
远程接口
连接数据库
stub
skeleton
net
ຫໍສະໝຸດ Baidu21
显式中间件特点
可控制性强,一切都在掌握中.. 代码难写.我想算一下图书罚款,可是.. Step1 安全检查(远程调用) Step2 事务检查(远程调用) Step3存取数据库(远程调用) Step4 完成调用(远程调用) 每次都必须走stub/skeleton,非常复杂!直接 指定中间件的动作...真要命
46
第一个ejb要做什么?
有一个getName的逻辑方法,用来显示 hello world的字符串
47
Step1建立ejb模块
File-new-ejb module,比如叫firstEjb 出现图形化的ejb-designer 右键,创建一个新的ejb,指定为ejb2.0的 sessionbean 起个名字叫TestSes
在用户看来,EJB是 若干.java程序 一个xml格式的部署文件 一个j2ee容器的专门部署文件 EJB程序经过部署,在weblogic等容器上 运行,自动实现中间件的特性(看前面 的特性一页)
11
部署文件说明ejb的组成的位置
说明ejb功能的接口(哪些方法)
说明如何创建ejb的接口
28
EJB组成2 EJB对象
还记得拦截器么? Ejb放在远程机器上,而客户在本地机器 上. 客户不可以直接调用远程ejb,要通过网 络 客户不希望自己控制安全,事务等 拦截器在j2ee里实现为一个EJB对象
29
EJB对象
client
Ejb container
事务 安全 数据库 EJB对象 ejb object 这给用户看见 拦截器
8
EJB的优点
它是统一的中间件标准.按这一标准开 发,容易买到合适的组件,也容易卖掉 组件..有利润 EJB有统一的规范,程序移植性非常 好. 系统开发规范,所以快速!(非常重要)
9
组件结构除了EJB还有..
比尔盖次 .net的可控组件 公共对象请求代理结构(CORBA)
10
EJB具体是什么?
45
在Weblogic中创建并调试ejb
准备软件:jbuilder+weblogic 目标:创建一个无状态的sessionbean 发布到weblogic 编一个客户程序调用bean的方法,同时 输出结果。 注意:weblogic的jndi在 t3://127.0.0.1:7001上,使用方法同一般 jndi.
EJB类(核心逻辑) 包括:void 罚款(…)业务 客户看不见
32
远程接口的作用
客户不直接和ejb或者ejb对象打交道 Ejb有些什么方法,只能看远程接口里写 了多少方法 远程接口是ejb的对外表现形式. 远程接口里的业务方法全部可以通过网 络远程调用.
33
Ejb组成之四:Home对象
26
27
EJB的组成1 EJB类
以计算罚款处理为例,EJB类包括核 心逻辑:算罚款. 所有EJB类必须实现 javax.ejb.EnterpriseBean接口 实际上三类ejb实现各自的接口,比如 sessionBean等,而sessionBean最终实 现EnterpriseBean接口
4
大型企业系统需要考虑的问题
远程方法调用 事务(并发) 软件升级(重新部署)需要停机? 正确/透明关机(用户感觉不到) 系统监控(全部) 对象生命周期(客户少,用资源也少?) 安全和高速缓冲
5
中间件
以上工作由 客户端(Browser)来做? 现成网络服务器来做?(只能做部份) 由数据库服务器来做?(一小部份) 由程序员自己写代码处理(困难) 引入中间件!复杂问题由它来处理
Ejb部件之八 供应商文件
Weblogic Jboss Websphere 特定容器的特定描述 Ejb-weblogic.xml? Ejb-websphere.xml? 告诉容器额外的信息
42
Ejb部件之九 ejb-jar文件
Home接口/ 对象 本地接口/ 对象*
Ejb的实际类
Weblogic等服务器的部署文件 至少五个部份组成一个ejb,打包成jar后发布到服务器12
EJB可以做哪些业务内容?
执行商务逻缉(算算税收,图书过期罚 款等) 数据库存取(通过jdbc),取指定图书, 计算某本书的借书量 访问其它系统,比如erp
13
谁?怎么使用EJB?
30
远程接口
EJB类,缩在里面 不给用户看见 放核心逻辑
EJB结构
Ejb对象,表现给用户看 这个对象由系统生成
EJB类(核心逻辑) 包括:void 罚款(…)业务 客户看不见
31
Ejb组成3 远程接口
远程接口,EJB提供者写,表明
1 给用户看见多少业务方法 2 实现哪些系统方法 Public interface javax.ejb.EJBObject { getEJBHome,getHandle,..) Ejb对象,表现给用户看 这个对象由系统生成
24
隐式中间件非常简单
要算罚款么?代码只要写 计算罚款 结束. 那么,安全检查,事务,数据库这些东 西还做不做呢?
25
隐式中间件
处理事务 client object 处理安全
远程接口
请求拦截者 skeleton
连接数据库
stub
net
请求拦截者做安全, 事务,数据库 怎么做由描述文件 来指定.
软件构件与中间件技术
cb@zjut.edu.cn
1
什么是EJB?
Enterprise Java Bean 开发EJB的目的 易于扩展,健壮并安全的应用程序
2
传统多层应用程序
client client client
server
server
db
3
企业级程序特点
大量硬件和应用程序通过网络互连 应用程序在网络间共享(网络调用)
网络连接 胖客户 (Applet /application) 瘦客户 Servlet/jsp SOAP,WSDL 企业客户 Web service EJBS
14
EJBS
EJBS
回顾:EJB的角色
工具提供者 系统集成者 部署者 Bean提供者
管理维护者
Ejb容器提供者
15
j2ee中间件必须支持的API
40
Ejb部件之七 部署描述
安全性,事务,数据库都交给容器了,用户不 必要编码. 但必须告诉容器,处理的方式 Xml来告诉容器,称为部署描述 Bean的生命期,安全性,事务都在xml里面指 定 和web.xml有点象.Web.xml描述web应用程 序,这里是ejb-jar.xml描述.和web.xml是同 一级的
Ejb对象和远程接口都在远程机器上 Ejb被ejb对象和远程接口封装了 远程机器上的远程接口表现了ejb的行为 可是,客户在本地..怎么办?
Remote接口 client
?
Ejb Ejbobject
34
位置透明
Ejb可以存在任何一台机器上 http://127.0.0.1/ejb名,这种形式不灵活 所以用到JNDI,要找一个ejb您必须: 1连接到JNDI服务器 2查到ejb名字,再取得引用 3把引用返回给客户 4客户创建一个ejb实例
35
Home对象的目的
Home对象负责在本地: 生成ejb实例 删除ejb实例 生成和删除和容器紧密相关,所以 Home对象由系统生成(容器)
36
EJB部件之五:Home接口
Home对象用户看不见 创建ejb 实例的时候,需要参数初始化 参数通过Home接口传给容器,然后传给 Home对象,然后给远程接口 Home接口用于 指明定义,生成,回收查找ejb实例 具体工作由Home对象来做
50
Step4 产生的结果看一看
Home接口 TestSesHome.class
Remote接口
打包文件 Ejb本身 应用程序配置
zengejb/TestSes.class
META-INF/ejb-jar.xml zengejb/TestSesBean.class
META-INF/weblogic-ejb-jar.xml
22
使用显式中间件的代码
调用安全检查 启动事务 从数据库装数据 数据计算罚款 向数据库写数据 结束事务 注销用户
23
显式中间件对用户要求过高
显式中间件有 Tuxedo 和CICS(weblogic里专门有 tuxedo连接器) 程序必须清楚中间件的api 程序员脑子要爆炸了..
49
Step3 自动产生jar文件
在project上选择Make,等啊等啊。。 成功乐!双击jar文件。。 anifest-Version: 1.0 zengejb/TestSesHome.class//home接口 Name: META-INF/ejb-jar.xml//部署文件 Name: zengejb/TestSes.class//ejb对象 Name: META-INF/weblogic-ejb-jar.xml//应用 Name: zengejb/TestSesBean.class//逻缉类 这些是什么?全部自动产生,爽啊
48
Step2:给ejb加入商务逻缉方法
右击testSes,add ,method加入方法,方法名 是getName,返回String,然后接口类型是 Remote(对象自己的) 双击左栏的testSesBean文件名,打开这个 bean 这就是核心bean,继承sessionBean,方法 getName改成public java.lang.String getName() { return “你写欢迎的话吧!";}
EJB RMI JNDI JDBC JTA JMS JSP/SERVLET XML JAAS
16
EJB基础结构
Ejb的完整组成部份是 Ejb类, 远程接口和ejb对象 本地接口和本地对象 Home接口和Home对象
部署描述文件 Ejb-jar文件
6
自行开发中间件的问题
各人开发各人的,标准不统一,不兼容 开发难度大,周期太长,不符合需要 J2EE容器是一个合适的,标准化的 中间件
7
EJB是中间件体系的一部份
EJB是什么? 一个EJB是由java开发的,可以部署 的,服务器端的组件 EJB体系指的是这些组件组成的体系 结构,由j2ee容器支持
51
Step5 配置并在jbuilder内部运 行weblogic(保持运行)
项目右键,run中选择server。 Run-选择server,server就在jbuilder内 部启动。
37
Home接口和对象
Home对象 Home 接口 事务 安全 数据库
EJB对象 Remote 接口 拦截器
Ejb核心类
38
39
Ejb部件六本地对象和本地接口
Ejb的调用过程本质上还是通过stubskeleton的. 通过网络连接比较费时 本地调试时用EJBLocalHome代替 EJBHome,不通过网络连接本机 牺牲了所有的分布网络特性,调试时用
17
EJB类型(老生常谈)
Session Bean会话bean,动词. 处理动作:计算价格,计算罚款等 Entity Bean实体bean.名词.是数据库 数据的java对象表示 MessageBean 也代表动作,只不过只 有发消息才能驱动它们.
18
分布式对象(非常重要)
client 远程机器 i 被调用的对象
Remote接口/ EJB对象
部署描述xml
Ejb-jar
EJB核心类
厂商描述xml
43
出卖/购买ejb
一个Ejb-jar文件打了包卖 每个bean单独卖 单独卖了以后卖服务,帮用户组装部署 赚钱中...
44
说了这么多,复习!
Ejb核心类/实例 Remote接口和EJB对象 Home接口和Home对象 本地接口和本地对象 部署描述文件 供应商文件 Ejb-jar文件
远程接口 映射 远程接口 代理 stub 本地机器 TCP /IP 网络
skeleton
远程机器1
19
20
显式中间件
处理事务 client object 处理安全
远程接口
连接数据库
stub
skeleton
net
ຫໍສະໝຸດ Baidu21
显式中间件特点
可控制性强,一切都在掌握中.. 代码难写.我想算一下图书罚款,可是.. Step1 安全检查(远程调用) Step2 事务检查(远程调用) Step3存取数据库(远程调用) Step4 完成调用(远程调用) 每次都必须走stub/skeleton,非常复杂!直接 指定中间件的动作...真要命
46
第一个ejb要做什么?
有一个getName的逻辑方法,用来显示 hello world的字符串
47
Step1建立ejb模块
File-new-ejb module,比如叫firstEjb 出现图形化的ejb-designer 右键,创建一个新的ejb,指定为ejb2.0的 sessionbean 起个名字叫TestSes
在用户看来,EJB是 若干.java程序 一个xml格式的部署文件 一个j2ee容器的专门部署文件 EJB程序经过部署,在weblogic等容器上 运行,自动实现中间件的特性(看前面 的特性一页)
11
部署文件说明ejb的组成的位置
说明ejb功能的接口(哪些方法)
说明如何创建ejb的接口
28
EJB组成2 EJB对象
还记得拦截器么? Ejb放在远程机器上,而客户在本地机器 上. 客户不可以直接调用远程ejb,要通过网 络 客户不希望自己控制安全,事务等 拦截器在j2ee里实现为一个EJB对象
29
EJB对象
client
Ejb container
事务 安全 数据库 EJB对象 ejb object 这给用户看见 拦截器
8
EJB的优点
它是统一的中间件标准.按这一标准开 发,容易买到合适的组件,也容易卖掉 组件..有利润 EJB有统一的规范,程序移植性非常 好. 系统开发规范,所以快速!(非常重要)
9
组件结构除了EJB还有..
比尔盖次 .net的可控组件 公共对象请求代理结构(CORBA)
10
EJB具体是什么?
45
在Weblogic中创建并调试ejb
准备软件:jbuilder+weblogic 目标:创建一个无状态的sessionbean 发布到weblogic 编一个客户程序调用bean的方法,同时 输出结果。 注意:weblogic的jndi在 t3://127.0.0.1:7001上,使用方法同一般 jndi.
EJB类(核心逻辑) 包括:void 罚款(…)业务 客户看不见
32
远程接口的作用
客户不直接和ejb或者ejb对象打交道 Ejb有些什么方法,只能看远程接口里写 了多少方法 远程接口是ejb的对外表现形式. 远程接口里的业务方法全部可以通过网 络远程调用.
33
Ejb组成之四:Home对象
26
27
EJB的组成1 EJB类
以计算罚款处理为例,EJB类包括核 心逻辑:算罚款. 所有EJB类必须实现 javax.ejb.EnterpriseBean接口 实际上三类ejb实现各自的接口,比如 sessionBean等,而sessionBean最终实 现EnterpriseBean接口
4
大型企业系统需要考虑的问题
远程方法调用 事务(并发) 软件升级(重新部署)需要停机? 正确/透明关机(用户感觉不到) 系统监控(全部) 对象生命周期(客户少,用资源也少?) 安全和高速缓冲
5
中间件
以上工作由 客户端(Browser)来做? 现成网络服务器来做?(只能做部份) 由数据库服务器来做?(一小部份) 由程序员自己写代码处理(困难) 引入中间件!复杂问题由它来处理