1 / 59

软件构件与中间件技术

软件构件与中间件技术. cb@zjut.edu.cn. 什么是EJB?. Enterprise Java Bean 开发EJB的目的  易于扩展,健壮并安全的应用程序. 传统多层应用程序. client. client. client. server. server. db. 企业级程序特点. 大量硬件和应用程序通过网络互连 应用程序在网络间共享(网络调用). 大型企业系统需要考虑的问题. 远程方法调用 事务(并发) 软件升级(重新部署)需要停机? 正确/透明关机(用户感觉不到) 系统监控(全部) 对象生命周期(客户少,用资源也少?)

media
Download Presentation

软件构件与中间件技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 软件构件与中间件技术 cb@zjut.edu.cn

  2. 什么是EJB? • Enterprise Java Bean • 开发EJB的目的 •  易于扩展,健壮并安全的应用程序

  3. 传统多层应用程序 client client client server server db

  4. 企业级程序特点 • 大量硬件和应用程序通过网络互连 • 应用程序在网络间共享(网络调用)

  5. 大型企业系统需要考虑的问题 • 远程方法调用 • 事务(并发) • 软件升级(重新部署)需要停机? • 正确/透明关机(用户感觉不到) • 系统监控(全部) • 对象生命周期(客户少,用资源也少?) • 安全和高速缓冲

  6. 中间件 • 以上工作由 • 客户端(Browser)来做? • 现成网络服务器来做?(只能做部份) • 由数据库服务器来做?(一小部份) • 由程序员自己写代码处理(困难) • 引入中间件!复杂问题由它来处理

  7. 自行开发中间件的问题 • 各人开发各人的,标准不统一,不兼容 • 开发难度大,周期太长,不符合需要 • J2EE容器是一个合适的,标准化的中间件

  8. EJB是中间件体系的一部份 • EJB是什么? • 一个EJB是由java开发的,可以部署的,服务器端的组件 • EJB体系指的是这些组件组成的体系结构,由j2ee容器支持

  9. EJB的优点 • 它是统一的中间件标准.按这一标准开发,容易买到合适的组件,也容易卖掉组件..有利润 • EJB有统一的规范,程序移植性非常好. • 系统开发规范,所以快速!(非常重要)

  10. 组件结构除了EJB还有.. • 比尔盖次 .net的可控组件 • 公共对象请求代理结构(CORBA)

  11. EJB具体是什么? • 在用户看来,EJB是 • 若干.java程序 • 一个xml格式的部署文件 • 一个j2ee容器的专门部署文件 • EJB程序经过部署,在weblogic等容器上运行,自动实现中间件的特性(看前面的特性一页)

  12. 部署文件说明ejb的组成的位置 说明ejb功能的接口(哪些方法)  说明如何创建ejb的接口  Ejb的实际类 Weblogic等服务器的部署文件 至少五个部份组成一个ejb,打包成jar后发布到服务器

  13. EJB可以做哪些业务内容? • 执行商务逻缉(算算税收,图书过期罚款等) • 数据库存取(通过jdbc),取指定图书,计算某本书的借书量 • 访问其它系统,比如erp

  14. 谁?怎么使用EJB? 网络连接 胖客户 (Applet /application) EJBS 瘦客户 Servlet/jsp EJBS SOAP,WSDL 企业客户 Web service EJBS

  15. 回顾:EJB的角色 工具提供者 系统集成者 部署者 管理维护者 Bean提供者 Ejb容器提供者

  16. j2ee中间件必须支持的API • EJB • RMI • JNDI • JDBC • JTA • JMS • JSP/SERVLET • XML • JAAS

  17. EJB基础结构 • Ejb的完整组成部份是 • Ejb类, • 远程接口和ejb对象 • 本地接口和本地对象 • Home接口和Home对象 • 部署描述文件 • Ejb-jar文件

  18. EJB类型(老生常谈) • Session Bean会话bean,动词. • 处理动作:计算价格,计算罚款等 • Entity Bean实体bean.名词.是数据库数据的java对象表示 • MessageBean 也代表动作,只不过只有发消息才能驱动它们.

  19. 分布式对象(非常重要) 远程机器 i 被调用的对象 client 远程接口 映射 TCP/IP网络 远程接口 skeleton stub 代理 远程机器1 本地机器

  20. 处理事务 client object 处理安全 连接数据库 远程接口 stub skeleton net 显式中间件

  21. 显式中间件特点 • 可控制性强,一切都在掌握中.. • 代码难写.我想算一下图书罚款,可是.. • Step1 安全检查(远程调用) • Step2 事务检查(远程调用) • Step3存取数据库(远程调用) • Step4 完成调用(远程调用) • 每次都必须走stub/skeleton,非常复杂!直接指定中间件的动作...真要命

  22. 使用显式中间件的代码 • 调用安全检查 • 启动事务 • 从数据库装数据 • 数据计算罚款 • 向数据库写数据 • 结束事务 • 注销用户

  23. 显式中间件对用户要求过高 • 显式中间件有 • Tuxedo 和CICS(weblogic里专门有tuxedo连接器)  • 程序必须清楚中间件的api • 程序员脑子要爆炸了..

  24. 隐式中间件非常简单 • 要算罚款么?代码只要写 •   计算罚款 • 结束. • 那么,安全检查,事务,数据库这些东西还做不做呢?

  25. 处理事务 处理安全 连接数据库 隐式中间件 client object 远程接口 请求拦截者 请求拦截者做安全, 事务,数据库 怎么做由描述文件 来指定. stub skeleton net

  26. EJB的组成1 EJB类 • 以计算罚款处理为例,EJB类包括核心逻辑:算罚款. • 所有EJB类必须实现javax.ejb.EnterpriseBean接口 • 实际上三类ejb实现各自的接口,比如sessionBean等,而sessionBean最终实现EnterpriseBean接口

  27. EJB组成2 EJB对象 • 还记得拦截器么? • Ejb放在远程机器上,而客户在本地机器上. • 客户不可以直接调用远程ejb,要通过网络 • 客户不希望自己控制安全,事务等 • 拦截器在j2ee里实现为一个EJB对象

  28. EJB对象 Ejb container 事务安全数据库 client EJB对象ejb object 这给用户看见 远程接口 EJB类,缩在里面 不给用户看见 放核心逻辑 拦截器

  29. Ejb对象,表现给用户看 这个对象由系统生成 EJB类(核心逻辑) 包括:void 罚款(…)业务 客户看不见 EJB结构

  30. Ejb对象,表现给用户看 这个对象由系统生成 EJB类(核心逻辑) 包括:void 罚款(…)业务 客户看不见 Ejb组成3 远程接口 远程接口,EJB提供者写,表明 1 给用户看见多少业务方法 2 实现哪些系统方法 Public interface javax.ejb.EJBObject { getEJBHome,getHandle,..)

  31. 远程接口的作用 • 客户不直接和ejb或者ejb对象打交道 • Ejb有些什么方法,只能看远程接口里写了多少方法 • 远程接口是ejb的对外表现形式. • 远程接口里的业务方法全部可以通过网络远程调用.

  32. Ejb组成之四:Home对象 • Ejb对象和远程接口都在远程机器上 • Ejb被ejb对象和远程接口封装了 • 远程机器上的远程接口表现了ejb的行为 • 可是,客户在本地..怎么办? Remote接口 Ejb Ejbobject client ?

  33. 位置透明 • Ejb可以存在任何一台机器上 • http://127.0.0.1/ejb名,这种形式不灵活 • 所以用到JNDI,要找一个ejb您必须: • 1连接到JNDI服务器 • 2查到ejb名字,再取得引用 • 3把引用返回给客户 • 4客户创建一个ejb实例

  34. Home对象的目的 • Home对象负责在本地: • 生成ejb实例 • 删除ejb实例 • 生成和删除和容器紧密相关,所以 • Home对象由系统生成(容器)

  35. EJB部件之五:Home接口 • Home对象用户看不见 • 创建ejb 实例的时候,需要参数初始化 • 参数通过Home接口传给容器,然后传给Home对象,然后给远程接口 • Home接口用于 • 指明定义,生成,回收查找ejb实例 • 具体工作由Home对象来做

  36. Home接口和对象 事务安全数据库 Home对象 Home接口 Ejb核心类 EJB对象 Remote 接口 拦截器

  37. Ejb部件六本地对象和本地接口 • Ejb的调用过程本质上还是通过stub-skeleton的. • 通过网络连接比较费时 • 本地调试时用EJBLocalHome代替EJBHome,不通过网络连接本机 • 牺牲了所有的分布网络特性,调试时用

  38. Ejb部件之七 部署描述 • 安全性,事务,数据库都交给容器了,用户不必要编码. • 但必须告诉容器,处理的方式 • Xml来告诉容器,称为部署描述 • Bean的生命期,安全性,事务都在xml里面指定 • 和web.xml有点象.Web.xml描述web应用程序,这里是ejb-jar.xml描述.和web.xml是同一级的

  39. Ejb部件之八 供应商文件 • Weblogic • Jboss • Websphere • 特定容器的特定描述 • Ejb-weblogic.xml? • Ejb-websphere.xml? • 告诉容器额外的信息

  40. Ejb部件之九 ejb-jar文件 Home接口/ 对象 本地接口/ 对象* Ejb-jar Remote接口/ EJB对象 部署描述xml EJB核心类 厂商描述xml

  41. 出卖/购买ejb • 一个Ejb-jar文件打了包卖 • 每个bean单独卖 • 单独卖了以后卖服务,帮用户组装部署 • 赚钱中...

  42. 说了这么多,复习! • Ejb核心类/实例 • Remote接口和EJB对象 • Home接口和Home对象 • 本地接口和本地对象 • 部署描述文件 • 供应商文件 • Ejb-jar文件

  43. 在Weblogic中创建并调试ejb • 准备软件:jbuilder+weblogic • 目标:创建一个无状态的sessionbean • 发布到weblogic • 编一个客户程序调用bean的方法,同时输出结果。 • 注意:weblogic的jndi在t3://127.0.0.1:7001上,使用方法同一般jndi.

  44. 第一个ejb要做什么? • 有一个getName的逻辑方法,用来显示hello world的字符串

  45. Step1建立ejb模块 • File-new-ejb module,比如叫firstEjb • 出现图形化的ejb-designer • 右键,创建一个新的ejb,指定为ejb2.0的sessionbean • 起个名字叫TestSes

  46. Step2:给ejb加入商务逻缉方法 • 右击testSes,add ,method加入方法,方法名是getName,返回String,然后接口类型是Remote(对象自己的) • 双击左栏的testSesBean文件名,打开这个bean • 这就是核心bean,继承sessionBean,方法getName改成public java.lang.String getName() { • return “你写欢迎的话吧!";}

  47. 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//逻缉类 • 这些是什么?全部自动产生,爽啊

More Related