仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 790|回复: 12
打印 上一主题 下一主题

[学习教程] JAVA网站制作之J2EE Enterprise Beans(中文翻译)

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:24:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,enterprise|j2ee|中文译:软件学院黄学<P>1简介.EnterpriseBeans是完成EnterpriseJavaBeans(EJB)手艺的J2EE的构成部分,它运转于EJB容器中。EJB是一个J2EE服务器的运转时情况(Runtimeenvironment)。固然EJB容器关于企业级使用开辟者来讲是通明的,可是它供应了体系层的服务,好比EnterpriseBeans的事件处置。这些J2EE中心事件使用服务能让你很快地构建并使用EnterpriseBeans。<P>1.1EnterpriseBeans是甚么?<P>EnterpriseBeans是用java言语编写的,用于完成企业级逻辑使用的服务器端组件。企业级逻辑使用都是一些有很强针对性的代码。好比:在一个财政清单使用中,EnterpriseBeans必需完成checkInventoryLevel和orderProduct办法。经由过程挪用这些办法,远程客户端能从企业使用服务器端失掉响应的服务。<P>1.2EnterpriseBeans的长处EnterpriseBeans能使得伟大的散布式使用复杂化,有以下几个缘故原由:<Palign=left>第一EJB容器为EnterpriseBeans供应了体系条理的服务,使用程序开辟者能够专注于开辟使用体系所需的贸易逻辑,而不必忧虑详细服务框架的完成成绩。EJB容器卖力了体系条理的服务和平安承认机制,而不必要开辟者往体贴。第二是EnterpriseBeans而不是客户端包括了企业使用逻辑,客户端开辟者能会合精神处置客户端使用,而不必编写企业逻辑或数据库存取的代码。如许的瘦客户端明显的长处就是客户端能运转在小设备上。第三由于EnterpriseBeans是一个自力的组件,以是在现有的beans上能机关出新的使用,这些使用能运转于分歧的J2EE服务器上。<P>1.3甚么时分我们该用EnterpriseBeans?假如你的体系使用有以下的需求,你能够思索用EnterpriseBeans:l体系是可晋级的。为了顺应愈来愈多的用户的会见,你必要把体系使用散布在分歧的呆板上。并非只要EnterpriseBeans能运转在分歧的呆板上,可是它关于客户端来讲是通明的,本来的会见地位仍是坚持没变。l事件处置请求数据完全性。EnterpriseBeans撑持如许的事件处置机制,就是事件处置能够并发存取一个共用的模块。l体系使用具有多样化的客户端。只必要几行代码,远程客户端就可以很简单的会见EnterpriseBeans。如许,客户端能够做到多样化,肥大,数目浩瀚。<P>1.4EnterpriseBeans的范例下图择要了EnterpriseBeans的三种分歧的范例。EnterpriseBeans范例用处Session用于客户真个义务Entity形貌一个现有的耐久的企业实体Message-DrivenJAVA信息服务API的监听器,处置分歧步的信息<P><P>2甚么是会话Bean(SessionBean)?一个SessionBean代表着一个J2EE服务器中的用户。为了要会见部署在服务器上的使用,客户端要挪用SessionBean的办法。SessionBean经由过程实行服务器外部的企业级义务,把客户端和庞大的外部完成分别开来,并完成客户端赐与的义务。如它的名字所显现的,一个SessionBean就像一个交互式session(interactivesession)。一个SessionBean是不克不及够共享利用的,它仅仅可以为一个客户端。一样的,一个interactivesession也只能一个客户端利用。和交互式session一样,一个SessionBean是不耐久的(数据并没有保留到数据库中)。当一个客户端停止会话后,它的SessionBean也将停止,不再和客户端毗连。<P>2.1形态办理形式SessionBean有两品种型:有形态和无形态<P>1.有形态SessionBean一个对象的形态由它的实例变量的值构成。在一个SessionBean中,它的实例变量形貌了一个独一的客户端bean的会话。由于客户真个互相之间的会话都是经由过程bean来“扳谈”的,以是bean的形态一般也叫做对话形态(conversationalstate)。形态是标识一个会话的延续工夫。假如客户端移除大概中断一个bean,那末形态就将消散。可是形态的这类长久性并非一个缺点,由于当客户端停止一个会话bean后,就没有需要保存它的形态了。<P>2.无形态SessionBean一个无形态SessionBean不会出格地保留客户端会话的形态。当客户端挪用无形态SessionBean的办法时,bean的实例变量就会保留一个形态,但仅仅是在挪用办法那段工夫内。当办法挪用终了今后,形态就不再存在了。除非在挪用SessionBean办法的过程当中,一切的无形态SessionBean都是被EJB容器均等的分派一个实例给恣意一个客户端。由于无形态SessionBean撑持多个客户端,以是它们可以供应更好的使用,那些使用必要大批的客户端一同完成。也就是说,为一样多的客户端服务,一个使用必要的无形态SessionBean要少于有形态SessionBean。同时,EJB容器要把有形态SessionBean中的信息保留到另外一个地区,而无形态SessionBean其实不必要。因此无形态SessionBean能有更好的体现。<P><P>2.2甚么时分利用SessionBean?一样平常的,在以下的情况下你应当利用SessionBean:<P>l不管任什么时候候,都只要一个客户端会见bean的实例。<P>l不必要久长的保留bean的形态,而仅仅是保存一段工夫(多是几个小时)。<P>有形态SessionBean对照合适以下的这些前提:<P>l用bean的形态来形貌bean和一个详细的客户端之间的会话。<P>lbean必要保留客户端会见bean办法时的挪用信息。<P>lbean作为客户端和其他体系使用组件的两头传媒,向客户端展示的是,组件是一个复杂的对象。<P>lbean在背景处置几个企业bean的数据流。举个例子,检察18章的AccountControllerEJBSessionBean使用。<P><P>为了改良功能,你应当选择一个无形态SessionBean,假如bean有以下的特征:<P>lbean的形态其实不保留任何一个特定客户真个信息。<P>l在一个单一的办法挪用中,bean为一切的客户端完成一系列的义务。好比,你能够用一个无形态SessionBean发送一封在线定购考证的邮件。<P>lbean从数据库中读取那些常常被客户端用到的,属性为只读的数据集。好比,检索出代表这个月产物发卖量的行数的bean。<P><P><P>3甚么是EntityBean?<Palign=left>一个实体Bean(EntityBean)暗示一个是耐久运转的企业实体。企业实体好比有:客户,定单和产物。在J2EE的JDK中,耐久存储布局就是一个干系模子数据库。有代表性的,每一个企业实体在干系模子数据库中都有一个表于它绝对应,而且表中的一行(一个元组)就代表实体的一个实例。检察例子,请看第五第六章。<P>3.1EntityBean和SessionBean有何分歧?<P>EntityBean分歧于SessionBean,有几个方面。实体bean是耐久的,它同意共享会见,有本人的标识(关头码),大概还和其余实体bean有接洽。假如你常常利用数据库体系,那末应当熟习永世性数据。数据库中的数据是永世的,由于即使你封闭了数据库体系大概中断了它的使用服务,数据仍是存在的。<P>耐久性<P>由于实体bean的形态存储在耐久性的数据库中,以是它是耐久的。耐久的意义是,当一个使用大概一个J2EE服务器历程停止后,实体bean的形态仍然存在。<P>EntityBean的永世性有两种模子:bean自办理形式和容器办理形式(bean-managedandcontainer-managed)。在bean自办理形式中,你所写的实体bean的实例要本人办理耐久性,因此代码要包含数据库会见的挪用。假如你的bean由容器办理,那末EJB容器会主动发生数据库会见的挪用。你所写的代码不必要包含数据库会见挪用。更多的信息,能够参看容器办理耐久性部分。<P>共享会见<P>一个实体bean一定能够被多个客户端共享会见。由于多个客户端都必要会见不异的数据,这也就显得实体bean在事件处置中的主要性。典范的,EJB容器供应事件处置的办理。云云,你能够在bean的部署仿单里枚举失事务处置的属性。你不用要本人编写事件处置的界限前提,而容器主动为你标志这些界限。更多信息参看14章。<P>独一标识<P>每一个实体bean都有一个独一的标识。好比,一个客户,它用客户的ID号标识。独一标识,大概叫做有主码,可让客户端查找到指定的实体bean。更多信息参看bean自办理形式的独一标识部分。<P>接洽性<P>就像数据库中的一个表,一个实体bean也和其他的实体bean有着接洽。好比,在一个学院先生注册的使用中,StudentEJB和CourseEJB一定有接洽,由于先生要注册到一个班级中。<P>你能够用bean自办理耐久性和容器办理耐久性来完成实体bean之间的接洽。在bean自办理形式中,你要自写代码来完成他们的接洽。在容器办理形式中,容器帮你办理实体bean之间的接洽。由于如许,人们常常把容器办理形式下的实体bean接洽叫做容器办理接洽(container-managedrelationships)。<P><P>3.2容器办理形式<P>容器办理形式,就是EJB容器把持着一切实体bean对数据库的会见。实体bean的代码中不必指定对数据库的会见挪用。因而,bean的代码不用绑定到一个特定的数据库。由于有了如许的温和性,当你把用样的bean部署到分歧的J2EE服务器上时,不必要修改大概从头编译代码。复杂来讲,你的实体bean加倍自力。<P>为了发生数据库挪用,容器必要搜集你实体bean中笼统形式的信息。<P><P>笼统形式<P>作为实体bean部署形貌的一部分,笼统形式界说了bean的耐久性和接洽性。“笼统”这个词区分出了这个形式和数据实践存储的物理形式。好比,在一个干系型数据库中,物理形式是由表和属性组成的。<P>你本人要在部署中指定笼统形式的称号。称号将被用JavaBeansQueryLanguage(“EJBQL”)编写的行列援用。容器办理形式下,你必需为实体bean的一切查找办法(除findByPrinaryKey)界说一个EJBQL行列。当查找办法被挪用的时分,EJB容器就从行列中实行。更多信息请参看第8章。<P>你大概已发明,在编写代码之前创建笼统模子是很有效的。表3-1体现三个实体bean中复杂的笼统模子。他们之间更多的接洽将鄙人面的章节中先容。<P><P>Figure3-1AHigh-LevelViewofanAbstractSchema<P><P><P>耐久性字段<P>一个实体bean的耐久性字段被保留到的数据库中。总的来讲,那些字段组成了bean的形态。在运转时中,EJB容器主动同步数据库中的这些形态。在部署中,EJB容器纪录bean到数据库中的表,而且纪录纪录耐久性字段到表中的属性。<P>比方,一个CustomerEJB实体bean,有如许的耐久性字段:firstName,lastName,phone,emailAddress。在耐久性容器办理形式中,这些字段是假造的。你在笼统形式中声了然这些字段,可是没有在bean代码中编写他们的实例变量。取代的是,这些字段在会见办法被断定。<P>接洽性字段<P>一个接洽性字段就如同数据库表的外码,它断定一个与本人接洽的bean。和耐久性字段一样,接洽性字段是假造的,是在企业bean中的会见办法中被断定的。但分歧的是,接洽性字段其实不暗示bean的形态。接洽性字段在“容器办理形式中接洽的偏向性(DirectioninContainer-ManagedRelationships)“一章将被更具体地会商。<P><P>3.3容器办理形式中接洽性的多元性<P>这里,多元性有四品种型:<P>一对一:(One-to-one)每个实体bean的实例都和另外一个实体bean的实例有联系关系。好比,在一个物理堆栈存储模子中,每一个存储箱都包括一个物品,StorageBinEJB和WidgetEJB就有一对一的干系。<P>一对多:(One-to-many)一个实体bean的实例大概和多个其他的bean的实例相干联。好比,一个发卖定单,能够有多个元组(多个定单)。在如许的定单使用中,OrderEJB对LineItemEJB有一对多的干系。<P>多对一:(Many-to-one)多个实体bean的实例和一个实体bean的实例相干联。这类联系关系与一对多联系关系相反。比方,在下面所提到的,LineItemEJB对OrderEJB有多对一的干系。<P>多对多:(Many-to-many)实体bean的实体之间互相都有多个接洽。好比,在年夜学中,一个课程有多论理学生选修,一位先生同时也选修多门课程。如许的使用中,CourseEJB和StudentEJB是多对多的干系。<P><P>3.4容器办理形式中接洽的偏向性<P>实体bean之间的接洽有单向和双向两种。在双向接洽中,每一个实体bean都有一个接洽字段与对方绝对应。经由过程这接洽字段,实体bean的代码就可以会见与它相接洽的bean。假如一个实体bean有一个接洽字段,那末我们常常称之为bean能辨认和它接洽的bean。举个例子,假如OrderEJB晓得LineItemEJB有哪些实例,并且LineItemEJB也晓得OrderEJB属于谁,那末它们之间的干系就是双向的。<P>在单向接洽中,仅仅只能个中一个实体bean有一个接洽字段和另外一个bean对应。比方,LineItemEJB有一个接洽字段辨认ProductEJB,可是ProductEJB不克不及有接洽字段和LineItemEJB对应。换句话说,LineItemEJB晓得ProductEJB,但ProductEJB不晓得哪一个LineItemEJB和它接洽。<P>EJBQL行列常常用于定位这些接洽。接洽的偏向性,由行列是不是能定位一个bean到另外一个bean来决意的。好比,一个行列能定位从LineItemEJB到ProductEJB,可是不克不及定位从ProductEJB到LineItemEJB。假如LineItemEJB和ProductEJB有双向接洽,那末行列能双向定位。<P>3.5甚么时分用EntityBeans<P>你能够在一下的情形下利用实体bean:<P>lBean代表一个贸易实体,而不是一个历程。好比,CreditCardEJB应为一个实体bean,但CreditCardVerifierEJB应为一个会话bean。<P>lBean的形态必须是耐久的。假如bean的实例停止大概J2EE服务器中断后,bean的形态仍旧保留在耐久性存储器中(数据库)。<P><P>4甚么是动静驱动Bean(Message-DrivenBean)?<P>注重:这个章节接洽到Java动静服务教程(TheJavaMessageServiceTutorial)。由于动静驱动Bean依附于Java动静服务(JMS)手艺。为了更好的懂得Message-DrivenBean,你能够参考一下上面教程URL:http://java.sun.com/products/jms/tutorial/index.html。<P>动静驱动Bean是同意J2EE服务器异步处置动静的企业级Bean。它饰演着JMS信息监听者的脚色,就像一个事务监听器,只不外是吸收事务交换成吸收信息。这些信息来来自于一些J2EE组件,好比一个使用客户端,其他的企业级Bean,一个web组件,大概一个没有利用J2EE手艺的JMS使用,JMS体系。<P>动静驱动Bean以后只处置JMS动静,大概未来它可以处置其他范例的动静。<P>实例请参看第7章节。<P><P>4.1动静驱动Bean和会话Bean,实体Bean有甚么分歧?<P>动静驱动Bean和会话Bean,实体Bean最年夜的分歧在于在客户端动静驱动Bean不必经由过程接口来会见。接口在章节“接口界说客户端会见”中有形貌过。和会话Bean,实体Bean纷歧样的是,动静驱动Bean唯一一个beanclass。<P><P>由几个方面思索,动静驱动Bean相似于一个无形态范例会话Bean。<P>l动静驱动Bean的实例不为任何客户端保留数据或会话形态。<P>l一切的动静驱动Bean的实例都是同等的,同意EJB容器指派一个动静就任何一个实例中。容器把这些实例构成一个池,使得动静流可以即刻被处置失落。<P>l一个动静驱动Bean可以处置多个客户真个动静。<P><P>动静驱动Bean实例的变量经由过程操纵客户真个动静可以存储一些形态。好比,一个JMSAPI毗连,一个开放数据库的毗连,大概一个实体被援用到一个企业Bean实体。<P>当一个动静抵达,容器挪用动静驱动Bean的onMessage办法来处置动静。onMessage办法一样平常把动静映照为五种JMS动静中的一个,而且把持它与使用的企业逻辑坚持分歧。onMessage办法挪用帮助办法,大概能够挪用一个会话Bean,一个实体Bean,来处置这些动静中的信息,大概保留到数据库中。<P>在事件处置的前后,一条动静大概被转换过,因而onMessage办法中的操纵都是一个自力的事件处置。假如动静处置被回滚了,那末动静也将复兴回本来的模样。更多的信息,请参看第7章。<P>4.2甚么时分利用动静驱动Bean。<P>会话Bean和实体Bean同意你发送信息,同步吸收信息,但不同意异步吸收信息。为了不绑定到多个信息源,你大概更喜好在不在服务器端组件中利用同步堵塞。为了异步吸收信息,利用动静驱动Bean吧。<P>5.EnterpriseBean的内容<P>开辟一个企业Bean,你必需供应以下的文件:<P>l部署形貌:一个XML文件包括部署的信息,好比它的分歧性范例和事件处置的属性。利用部署工具能够经由过程它新EnterpriseBean导游来无效地天生一个部署申明。<P>lEnterpriseBean类:完成接口界说的办法。<P>l接口:远程会见,必要远程和当地接口。当地会见,必要当地和当地的接口。请参看“界说客户端会见接口”章节。(注重这些接口都没有被动静驱动Bean利用)<P>l帮助类:企业Bean必要一些其他的类,好比非常和有用类。<P><P>你把下面所说的文件打包为EJBJAR文件。EJBJAR是存储企业Bean的模子,它是自力的,能够被用到分歧的使用中往。为了构建成一个使用,你必需打包一个或多个模子(好比EJBJAR文件)到EAR文件中往。EAR是一个使用的文档文件。当你部署包括EJBJAR文件的EAT文件时,你也就是把企业Bean部署到J2EE服务器上。<P>6.EnterpriseBean定名习气<P>由于企业Bean由多个部分组成,他们常常遵守上面的定名习气。表3-2搜集了这个教程里的一些定名习气。<P>Table3-2NamingConventionsforEnterpriseBeans<P>Item<P>Syntax<P>Example<P>Enterprisebeanname(DD)<P><name>EJB<P>AccountEJB<P>EJBJARdisplayname(DD)<P><name>JAR<P>AccountJAR<P>Enterprisebeanclass<P><name>Bean<P>AccountBean<P>Homeinterface<P><name>Home<P>AccountHome<P>Remoteinterface<P><name><P>Account<P>Localhomeinterface<P>Local<name>Home<P>LocalAccountHome<P>Localinterface<P>Local<name><P>LocalAccount<P>Abstractschema<P><name><P>Account<P>DD暗示这一项是部署申明中的元素。
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。
若相依 该用户已被删除
沙发
发表于 2015-1-21 05:37:03 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
透明 该用户已被删除
板凳
发表于 2015-1-24 16:23:28 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
简单生活 该用户已被删除
地板
发表于 2015-1-25 21:06:13 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
山那边是海 该用户已被删除
5#
发表于 2015-1-26 21:09:06 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
乐观 该用户已被删除
6#
发表于 2015-2-4 20:05:05 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
谁可相欹 该用户已被删除
7#
发表于 2015-2-5 04:37:43 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
小女巫 该用户已被删除
8#
发表于 2015-2-8 20:07:26 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
海妖 该用户已被删除
9#
发表于 2015-2-26 03:12:27 | 只看该作者
是一种使用者不需花费很多时间学习的语言
飘飘悠悠 该用户已被删除
10#
发表于 2015-2-28 19:42:54 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
变相怪杰 该用户已被删除
11#
发表于 2015-3-10 07:10:15 | 只看该作者
是一种使用者不需花费很多时间学习的语言
精灵巫婆 该用户已被删除
12#
发表于 2015-3-17 05:07:53 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
爱飞 该用户已被删除
13#
发表于 2015-3-23 19:48:04 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 03:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表