guokehua(@yahoo.com.cn oy Java! 1010 30SessionEJB(I) 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 30SessionEJB SessionEJB(1)
guokehua(@yahoo.com.cn oy Java! 问题的提出 问题原型:一个Jaa虚拟机内的对象能否远程调用 另外一个Java虚拟机里面的对象内的方法? 1010 用桌面应用程序远程査询自己的个人信息,怎么作? (1)我公司编写了一个程序,专门负责显示天气预报, 我想把它发布出去,怎么做?(普通Web站点) ·(2)我公司编写了一个程序,专门负责显示股票行情, 另一个公司专门负责读取股票行情之后分析这些数 据,怎么做?(注意两边都是用Java语言)?? RM给我们提供了技术支持,并且成为EJB的基础, EJB可以支持分布式应用 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 问题的提出 • 问题原型:一个Java虚拟机内的对象能否远程调用 另外一个Java虚拟机里面的对象内的方法? • 用桌面应用程序远程查询自己的个人信息,怎么作? • (1)我公司编写了一个程序,专门负责显示天气预报, 我想把它发布出去,怎么做?(普通Web站点) • (2)我公司编写了一个程序,专门负责显示股票行情, 另一个公司专门负责读取股票行情之后分析这些数 据,怎么做?(注意:两边都是用Java语言) ?? • RMI给我们提供了技术支持,并且成为EJB的基础, EJB可以支持分布式应用
guokehua(@yahoo.com.cn oy Java! Se erver 1010 浏览器 Struts Spring J2SE客户端 Hibernate 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 Server Struts Spring Hibernate 浏览器 J2SE客户端
guokehua(@yahoo.com.cn oy Java! Struts Server 1010 S pring Hibernate 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 Struts Spring Hibernate Server
guokehua(@yahoo.com.cn oy Java! 1010 Struts Server l Ejb Server2 Ejb Server 3 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 Struts Ejb Ejb Server1 Server2 Server3
guokehua(@yahoo.com.cn Y/、考虑下面的问题 某个飞机订票系统使用JSP页面进行用户的机票预定,其中有一段代码如下: void booket 查找数据库中剩余的票的数量; If(剩票数>0){ 记录这位顾客的资料; 将所剩余的票数-1,写回数据库 1010 回送消息:订票成功” else{回送消息对不起,票已经没有了”;} 你是否能发现其中的线程漏洞? 然后请你考虑以下问题 转帐时候,一般情况是以下流程: 个用户的钱变少 另一个人的钱变多 在这个过程中,你是否担心事务问题? 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 考虑下面的问题: 某个飞机订票系统使用JSP页面进行用户的机票预定,其中有一段代码如下: void book(){ 查找数据库中剩余的票的数量; If(剩票数>0) { 记录这位顾客的资料; 将所剩余的票数-1,写回数据库; 回送消息:“订票成功”; } else{回送消息:“对不起,票已经没有了”;} } 你是否能发现其中的线程漏洞? 然后请你考虑以下问题: 转帐时候,一般情况是以下流程: 一个用户的钱变少 另一个人的钱变多 在这个过程中,你是否担心事务问题?
guokehua(@yahoo.com.cn EJB的提出 问题1的解决方案:自己编写一些代码,实现代码块 加锁 问题2的解决方案:自己编写一些代码,实现代码块 原子性,并且编写一些通信机制 但以上方法都有一个问题:逻辑性很强,一般人很 不容易编的很好但在一些敏感的系统里面,这个 事情又不得不作 自从有了BJB情况就大不相同了 因为你只要用EJB来包装这段代码,进行适当的配置 这段代码就能够实现前面所讲的各种性质 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 EJB的提出 问题1的解决方案:自己编写一些代码,实现代码块 加锁 问题2的解决方案:自己编写一些代码,实现代码块 原子性,并且编写一些通信机制 但以上方法都有一个问题:逻辑性很强,一般人很 不容易编的很好,但在一些敏感的系统里面,这个 事情又不得不作 自从有了EJB,情况就大不相同了 因为你只要用EJB来包装这段代码,进行适当的配置, 这段代码就能够实现前面所讲的各种性质
guokehua(@yahoo.com.cn 了yPE架构 pple Container Web Container EJB Container Applet JSP Servlet RMI EJB 1010 J2SE App Client Container App Http/ Client J2SE RMI = J2SE J2SE Database 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 J2EE架构
guokehua(@yahoo.com.cn oy ava EJB的类型 EJB定义了四种类型的组件 > Session bean:会话Bean(封装业务逻辑),负责作 事情适合封装业务逻辑 1010 > stateless session beans(单态业务逻辑):无状态会话组 件不保存任何会话状态 > stateful session beans(非单态业务逻辑):有状态会话 组件,可以保存各个方法调用之间的会话状态 > Entity beans:实体Bean(封裝持久层逻辑) 代表底层数据的持久化对象把表的数据映射到对 象的成员,主键在实体Bean中具有唯一性,一个对象 关系映射可将每个实体Bean映射为表中的一行 > message driven beans:消息驱动组件 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 EJB的类型 ¾ EJB 定义了四种类型的组件 ¾ Session Bean:会话Bean(封装业务逻辑),负责作 事情,适合封装业务逻辑 ¾stateless session beans(单态业务逻辑): 无状态会话组 件,不保存任何会话状态 ¾stateful session beans(非单态业务逻辑):有状态会话 组件,可以保存各个方法调用之间的会话状态 ¾ Entity beans: 实体Bean(封装持久层逻辑) ¾代表底层数据的持久化对象,把表的数据映射到对 象的成员,主键在实体Bean中具有唯一性,一个对象- 关系映射可将每个实体Bean映射为表中的一行 ¾ message driven beans:消息驱动组件
guokehua(@yahoo.com.cn oy aval stateless bean FIstateful bean Client Client 1a目 Stateful Session Client Stateless o口 Session Server Client Container Client Client 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 stateless bean stateless bean 和stateful bean stateful bean