培训资料演示文稿PPT EJB3.0企业开发专题培训资料(1).ppt
《培训资料演示文稿PPT EJB3.0企业开发专题培训资料(1).ppt》由会员分享,可在线阅读,更多相关《培训资料演示文稿PPT EJB3.0企业开发专题培训资料(1).ppt(52页珍藏版)》请在三一办公上搜索。
1、,北京传智播客教育,EJB3.0企业开发,讲师:黎活明,北京传智播客教育,北京传智播客教育,什么是EJB,Enterprice JavaBeans是一个用于分布式业务应用的标准服务端组件模型。采用Enterprice JavaBeans架构编写的应用是可伸缩的、事务性的、多用户安全的。采用ejb编写的这些应用,可以部署在任何支持Enterprice JavaBeans规范的服务器平台,如jboss、weblogic等。,北京传智播客教育,北京传智播客教育,EJB用来干什么?,EJB实际上是用于编写业务层代码。如果大家对于MVC(model-view-controller)结构的应用有所了解的话
2、,我们知道一个基于MVC结构的应用应包含显示层、控制层和业务层,假设我们采用ejb开发基于MVC结构的应用,那么ejb就是用于开发应用的业务层.,北京传智播客教育,北京传智播客教育,EJB的好处,EJB为我们提供了很多在企业开发中需要使用到的服务,如事务管理/安全/持久化/分布式等,因为这些服务由容器提供,无需我们自行开发,这样大大减少了我们的开发工作量.另外EJB提供了强制式分层解耦设计方法,北京传智播客教育,北京传智播客教育,EJB3 VS Spring2.5,估计有同学会问,除了EJB,像spring+hibernate同样提供了事务管理/持久化服务,好像没有必要使用ejb.如果你的应用
3、不需要分布式能力,确实没有必要使用ejb,因为spring+hibernate提供了大部分原来只有ejb才有的服务,而且spring提供的有些服务比ejb做的更细致,更周到。那么是不是有了spring,EJB3就没有必要存在了?这种说法是不正确的,因为ejb设计的初衷是用于分布式场合,而spring一开始就没有打算提供分布式功能。所以两者看似有竞争的关系,但实际上两者的偏重点不一样,像ejb比较适合用于大型企业,因为大型企业一般都会存在多个信息系统,而这些信息系统又相互关联。为了避免业务功能重复开发,实现最大程度的重用,有必要把业务层独立出来,让多个信息系统共享一个业务中心,这样应用就需要具备
4、分布式能力。,北京传智播客教育,北京传智播客教育,EJB3 的分布式特点,北京传智播客教育,北京传智播客教育,EJB3 的分布式特点,北京传智播客教育,北京传智播客教育,我是否应该学习EJB3?,经常有同学会问我要不要学习ejb3?如果你学习ejb3只为了找份工作的话,那么我告诉你一个现实情况,目前使用ejb3的人数虽然有所上升,但是在关于ejb3的工作岗位并不多。所以依靠它找工作的话,恐怕会让你失望。当然如果你只是为了学习的话,那么ejb3是非常值我们学习的,因为ejb3包含的知识点非常多,学习它可以开拓我们的知识面。对于一线的java开发人员,我更是建议,不管在工作中是否用到ejb3,都应
5、该学习一下ejb3,因为通过学习她,可以让你站在更高的台阶思考问题。,北京传智播客教育,北京传智播客教育,EJB的发展前景,很多人都会问到ejb的发展前景,可以告诉大家ejb的发展前景会越来越好。目前在java社区关于ejb讨论的话题并不是很多,而且ejb占领的市场份额也很少,这种情况主要与它的定位有关,至少现在它的定位还是在分布式应用。有组织统计过在100个项目中,需要分布式的应用只占15%,而85%的应用都是不需要分布式的,这个比例就决定了关注ejb的人不会很多,而且ejb所占的市场份额也不会很大。如果ejb要占领大部分市场份额就必须提供像Spring这样的轻量级解决方案。好在ejb专家组
6、已经认识到了这一点,目前正计划在ejb3.1规范中加入轻量级解决方案(ejb3.1可能会分成两个版本,一个仍然定位于分布式应用,另一个定位于轻量级应用)。如果这个计划得以实现的话,恐怕到时ejb3.1将会逐步吞食由Spring占领的市场份额。因为ejb3的开发和spring一样的简单,而且ejb3是javaee5规范里的技术,所以大部分项目经理都愿意选择一种开发简单、又被更多厂商兼容的标准技术。,北京传智播客教育,北京传智播客教育,EJB3.0的学习资源,EJB3.0入门经典出版书,网上卖价:45元 购买地址:http:/www.china-下载地址:http:/,北京传智播客教育,北京传智播
7、客教育,EJB3的运行环境,EJB3.0应用需要运行在JDK1.5以上版本。进入http:/5.0 Update 16(版本在不断更新中,有可能大于16),点击右边的Download。按照安装向导提示安装,安装路径选择C:Javajdk1.5.0_16。Jdk安装完后,接着问你是否安装jre,也一起安装上。右键点击“我的电脑”-“属性”-“高级”-“环境变量”,在“系统变量”里添加JAVA_HOME 变量,值为JDK的安装路径,如:C:Javajdk1.5.0_16。在“系统变量”里再添加CLASSPATH变量,值为:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libt
8、ools.jar;在系统变量栏找到变量名为Path的选项,点“编辑”在变量值的末尾添加;%JAVA_HOME%bin;,北京传智播客教育,北京传智播客教育,EJB3的运行环境,EJB3.0应用需要运行在EJB容器里,下面是一些JavaEE应用服务器,JavaEE应用服务器包含Web容器和EJB容器。Jboss(4.2.x以上版本)是一个成熟的开源的准JavaEE应用服务器,在开源JavaEE应用服务器中所占市场份额第一。如果你打算选用开源的JavaEE应用服务器,那么jboss是最值得选择的。Glassfish 是一个开源的JavaEE应用服务器,对JavaEE规范的支持非常好,其运行性能比较
9、高。因为发展时间相对较短,市场占有率比较低。另外,它能否提供稳定的运行性能,还有待时间的考验。但本人对其后期的发展非常看好。绝对跟jboss有的一拼。Weblogic(10以上版本)是商业市场占有率第一的商业JavaEE应用服务器,它具有出色的稳定性,并提供了人性化的管理界面,还有企业需要使用到的众多功能。但在ejb3.0领域,本人认为它做的比jboss差些,bug比较多。Sun Application Server(9.0以上版本)商业JavaEE应用服务器,如果你打算选用商业应用服务器运行ejb3,这个是不错的选择。Oracle Application Server(10g以上版本)商业J
10、avaEE应用服务器,如果你的数据库是oracle,要想兼容性更好,这个是不错的选择。apusic应用服务器 这是国内的商业JavaEE应用服务器,主要在政府中占有一定的市场份额。要批评的是,其向开发人员提供的文档实在太少了,本人曾经想在其上面开发应用,结果找了大半天也没有找到需要的开发文档。注意:Tomcat目前只是Web容器,它不能运行EJB应用。,北京传智播客教育,北京传智播客教育,下载与安装jboss,进入http:/文件下载。如果你安装的jdk是1.6版本,请选择jboss-4.2.3.GA-jdk6.zip 文件下载。下载后直接解压缩文件即可完成安装,为了避免应用出现莫名的错误,解
11、压缩的路径最好不要带有空格和中文,如“Program Files”。,北京传智播客教育,北京传智播客教育,启动JBoss,进入jboss的bin目录,找到启动脚本run.bat。双击run.bat即可启动jboss,此时启动的配置项为default。如果启动出错,请检查下列情况:1.端口是否被占用,如:8080、10992是否为JDK设置的JAVA_HOME和ClassPath系统变量,如果没有,请按照前面视频介绍的方法设置。3.检查jboss所用的jdk是否1.5以上版本,这些信息可以在jboss的控制台观察到。4.如果启动时出现这样的错误:“findstr不是内部或外部命令,也不是可运行的
12、程序或批处理文件”。那么应该在系统变量Path中追加“%SystemRoot%system32;%SystemRoot%;”。最后的办法是重装机器上的JDK,祝你好运。,北京传智播客教育,北京传智播客教育,为jboss设置JBOSS_HOME系统变量,因为在后面的学习中,我们需要使用到系统变量JBOSS_HOME,它指向jboss的安装路径。所以安装完后我们需要添加该变量,方法是:右键点击“我的电脑”-“属性”-“高级”-“环境变量”,在“系统变量”里添加JBOSS_HOME变量,值为Jboss的安装路径,如:D:JavaEEServerjboss。为了方便输入jboss的命令,我们把jbos
13、s的bin目录添加到系统路径里。在系统变量一栏找到变量名为Path的选项,点“编辑”在变量值的末尾添加:;%JBOSS_HOME%bin;,北京传智播客教育,北京传智播客教育,EJB中的三种bean,1.会话bean(session bean)负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作.2.实体bean(entity bean)它实际上属于java持久化规范(简称JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate、TopLink等ORM框
14、架各自为营的局面。3.消息驱动bean(message-driven bean)它是专门用于异步处理java消息的组件.具有处理大量并发消息的能力.,北京传智播客教育,北京传智播客教育,会话bean,无状态会话bean 平常,我们使用最多的是无状态bean,因为它的bean实例可供多个用户使用,所以它的性能比有状态bean高.正因为一个bean实例被多个用户使用.那么,前一个用户设置的值有可能被后一个用户所修改,所以它无法正确保存某个用户设置的值,因此是无状态的.有状态会话bean有状态bean平常使用的并不多,因为它的一个bean实例只供一个用户使用,所以性能开销比较大,正因为它的实例只被一
15、个用户使用,用户为它设置的值是不会被其他用户修改,所以可以正确保存用户设置的值,因此是有状态的.,北京传智播客教育,北京传智播客教育,如何开发一个无状态会话bean,开发工具:Eclipse IDE for Java EE 下载地址:http:/www.eclipse.org/downloads开发EJB依赖的jar文件 可以在jboss安装路径的client目录下找到,通常会把client目录下的所有jar文件添加到项目的类路径下.,北京传智播客教育,北京传智播客教育,如何开发一个无状态会话bean,接口(接口可以是远程接口或本地接口)实现类,北京传智播客教育,北京传智播客教育,Sessio
16、n bean的客户端开发,public static void main(String args)Properties props=new Properties();props.setProperty(java.naming.factory.initial,org.jnp.interfaces.NamingContextFactory);props.setProperty(java.naming.provider.url,localhost:1099);try InitialContext ctx=new InitialContext(props);HelloWorld helloworld=
17、(HelloWorld)ctx.lookup(HelloWorldBean/remote);System.out.println(helloworld.sayHello(佛山);catch(NamingException e)System.out.println(e.getMessage();,北京传智播客教育,北京传智播客教育,设置JNDI访问环境信息,在进行JNDI查找前,我们必须设置应用服务器的上下文信息,主要是设置JNDI驱动的类名(java.naming.factory.initial)和命名服务提供者的URL(java.naming.provider.url)。java.namin
18、g.factory.initial或Context.INITIAL_CONTEXT_FACTORY:环境属性名,用于指定InitialContext工厂(作者称它为JNDI驱动更容易理解),它类似于JDBC指定数据库驱动类。因为本例子连接的是JbossNS(命名服务的实现者),所以使用Jboss提供的驱动类:org.jnp.interfaces.NamingContextFactoryjava.naming.provider.url或Context.PROVIDER_URL:环境属性名,包含提供命名服务的主机地址和端口号。它类似于JDBC指定数据库的连接URL。连接到JbossNS的URL格式
19、为:jnp:/host:port,该URL的“jnp:”部分是指使用的协议,JBoss使用的是基于Socket/RMI的协议。host为主机的地址,port为JNDI服务的端口。除了host之外,其他部分都是可以不写的。下面是数据库访问例子:Class.forName(org.gjt.mm.mysql.Driver).newInstance();Properties props=new Properties();props.put(user,root);props.put(password,123456);Connection conn=DriverManager.getConnection(
20、jdbc:mysql:/localhost:3306/itcast,props);,北京传智播客教育,北京传智播客教育,设置JNDI访问环境信息,如同数据库一样,根据访问命名服务器的不同,为上下文设置的驱动类和URL也是不同的,如下面是访问Sun应用服务器的上下文信息:Properties props=new Properties();props.setProperty(java.naming.factory.initial,com.sun.enterprise.naming.SerialInitContextFactory);props.setProperty(java.naming.pro
21、vider.url,localhost:3700);InitialContext=new InitialContext(props);HelloWorld helloworld=(HelloWorld)ctx.lookup(com.foshanshop.ejb3.HelloWorld);如果客户端运行在应用服务器内,我们不需要为InitialContext设置应用服务器的上下文信息,也不建议设置。因为应用服务器启动时会把JNDI驱动类等上下文信息添加进系统属性,创建InitialContext对象时如果没有指定Properties参数,InitialContext内部会调用System.get
22、Property()方法从系统属性里获取必要的上下文信息。对本例子而言,你可以省略传入props参数,之所以给InitialContext设置参数,目的是引出相关知识点,便于教学。在实际应用中,如果给InitialContext设置了参数,反而会带来不可移植的问题。注:创建InitialContext对象时如果没有指定Properties参数,InitialContext还会在classpath下寻找jndi.properties文件,并从该文件中加载应用服务器的上下文信息。这样避免了硬编码为InitialContext设置Properties参数。jndi.properties的配置如下:j
23、ava.naming.factory.initial=org.jnp.interfaces.NamingContextFactoryjava.naming.provider.url=localhost:1099java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces,北京传智播客教育,北京传智播客教育,Jboss默认生成的JNDI 名称,当EJB发布到Jboss 时,如果我们没有为它指定全局JNDI名称或修改过其默认EJB名称,Jboss就会按照默认的命名规则为EJB生成全局JNDI名称,默认的命名规则如下:如果把EJB作
24、为模块打包进后缀为*.ear的JAVA EE企业应用文件,默认的全局JNDI名称是本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote EAR-FILE-BASE-NAME为ear文件的名称,EJB-CLASS-NAME为EJB的非限定类名。例:把HelloWorld应用作为EJB模块打包进名为HelloWorld.ear的企业应用文件,它的远程接口的JNDI 名称是:HelloWorld/HelloWorldBean/remote如果把EJB应用打包成后缀为*.jar
25、的模块文件,默认的全局JNDI名称是本地接口:EJB-CLASS-NAME/local远程接口:EJB-CLASS-NAME/remote例:把HelloWorld应用打包成HelloWorld.jar文件,它的远程接口的JNDI名称是:HelloWorldBean/remote,北京传智播客教育,北京传智播客教育,使用注释改变Session Bean的JNDI 名称,如果我们没有指定EJB的JNDI名称,当EJB发布到应用服务器时,应用服务器会按默认规则为EJB生成全局JNDI名称。当我们需要自定义JNDI名称时,可以这样做如果EJB在Jboss中使用,可以使用Jboss提供的 LocalB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 培训资料演示文稿PPT EJB3.0企业开发专题培训资料1 培训资料 演示 文稿 PPT EJB3 企业 开发 专题
链接地址:https://www.31ppt.com/p-2791179.html