J2EE 1.4 的新特性完全展播 |
作者:佚名 发布时间:2005-04-02 来源:不详
|
J2EE开发人员所需掌握 ,甚至也不会讨论新技术。 J2EE项目中使用哪些特性。
|
的技术列表是相当冗长的。在这 我们将要探讨的是它的一些主要
|
篇文章里,我们不会讨论J2EE技术 的新特性,然后您就会知道要在
|
J2EE 1.4带来了一些新 消息传递和较容易的Web开 --大多数规范都很重要。最 规范本身。此外,还有一些 服务以及J2EE部署和管理规
|
的且很有趣的特性。他们始终围 发。要满足这些主题的需要,组 主要的(也是最多的)升级是JC 规范也是新的(或者对J2EE来说 范。
|
绕着三个主要的主题:Web 服务、 成J2EE的所有主要规范都得到升级 A 1.5规范和JSP 2.0规范以及J2EE 是新的)--例如:JAX-RPC、Web
|
在J2EE 1.4中包含了一 大部分是用于支持Web 服务
|
些新的规范和技术。总体来说, 或XML的。其中最重要的几个是
|
在对J2EE最重要的扩充内容中,绝 :
|
Web services for J2EE (JSR-109) |
这个新的规范描述了Web 服务怎样作 的变化是增加了新的部署描述符,这种描
|
为servlet或EJB无状态会话Bean来部署。最引人注目 述符将支持把组件作为Web 服务来部署。
|
JAX-RPC是用于使用SOAP进行远程过 象调用Web服务。在J2EE中使用JAX-RPC的
|
程调用的Java API。使用这些API,就可以用远程对 方式和调用远程EJB非常相似。
|
JAX-RPC规范也定义了 实现还包括一些工具,用于
|
一个Web服务(通过其WSDL)映 从WSDL生成接口、存根等等,或
|
射到Java接口的方式。JAX-RPC的 者从接口生成WSDL。
|
J2EE 在 Web 服务的服务器端和客户 servlet 或者 EJB)将会用到JAX-RPC 接 JAX-RPC用作远程接口。
|
端都使用了JAX-RPC。在J2EE中实现的Web服务(作为 口。而如果一个组件要远程调用Web服务,它就会把
|
SAAJ是SOAP with atta 许那些在SOAP调用中传递的
|
chments API for Java(用于Ja 附件可以被Java访问。
|
va的带有附件API的SOAP),它允
|
JAXR是用于XML注册表 ebXML和OASIS。很不幸,J2
|
的Java API,这些API 用来访问 EE不要求支持任一特定注册表,
|
Web 服务注册表,比如 UDDI、 但可用使用API且实现该API。
|
现在J2EE 1.4规范要求 。如果您正在编写操纵XML
|
支持SAX 2、DOM level 2、XML 的J2EE应用程序,则您现在必须
|
架构和命名空间,还要求支持XSLT 支持最新的版本才能工作。
|
J2EE管理和部署API(JSR-77和JSR-88) |
这两种API被工具和IDE供应商所关注 应用服务器上的管理和部署活动。这使得 各样的应用服务器交互,而无需使用特定
|
。它们提供了一套供应商无关的API,用来控制J2EE IDE(或我们自己开发的工具)可以很轻松地同各种 于供应商的大量API。
|
J2EE所包含的所有规范在J2EE 1.4中 J2EE的"四大件"(EJB、JCA、servlets和
|
都不同程度上有了些变化。但有些变化很微小,但是 JSP)都增加了重要的的新特性。
|
Enterprise Java Beans 2.1 |
EJB 2.1规范的改进主 还增加了计时器服务并增强
|
要在于Web服务和消息传递。这 了容器管理的实体bean的EJB-QL
|
将在下面详细说明。不过EJB 2.1 查询语言。
|
新的计时器服务允许任 于时间的回调功能。EJB能 安排定期(如每10分钟)回 误用的潜在可能--这只能让
|
何EJB(除了有状态的会话bean 够请求一个特定时间后(如10秒 调。这个特性在有些情况下会很 时间来告诉我们答案了。
|
)进行注册,以获得来自容器的基 钟)的单个回调信号,或者也可以 有帮助,但是同时也存在着被大大
|
对EJB-QL的增强是操作符ORDER BY、 务器在他们的特定于提供商的扩展中都会
|
SUM、COUNT、AVG、MAX、MIN和MOD。大多数的应用服 提供这些操作符。而现在,他们最终被写入了规范。
|
Enterprise Java Beans 2.1--Web服务端点 |
对Web服务来说,EJB 能力可以被用来实现新的We
|
已经加入了把无状态会话 bean b服务或者通过Web服务接口把先
|
作为Web服务来使用的能力。这种 有的EJB公布出去。
|
把一个现有的无状态会 WSDL(使用JAX-RPC工具) 个service-endpoint元素无 EJB 现在就拥有了全部或部 描述符webservices.xml, WSDL连接到了EJB上并通知
|
话bean转化成一个Web服务端点 ,然后在ejb-jar.xml文件中加 论看起来还是用起来都像是访问 分的远程的、本地的和Web服务 文件中包含service-impl-bean 应用服务器通过Web容器把它公
|
是相对容易的。从远程接口生成 入一个service-endpoint元素。这 您的EJB的另一个接口--这样您的 端点的接口。接着,添加一个部署 和ejb-link两个元素。这样就把 布出去。
|
同样,可以把现存的Web服务作为无 WSDL来生成接口。
|
状态会话 bean来实现,除非您使用JAX-RPC工具从
|
Enterprise Java Beans 2.1--Web 服务客户端 |
EJB 2.1规范现在明确 口)。调用Web服务和调用 元素,Web服务会被映射,
|
允许任何一个EJB可以成为某个W 另外一个EJB的方式极其相似。 这样您可以使用"java:comp/env
|
eb服务的客户端(通过JAX-RPC接 使用部署描述符中的service-ref /"的名字在JNNI中查询这个服务。
|
顺便说明,这一技术不仅在EJB中可 还可以在servlets 或者JCA适配器中来调
|
以使用,而且可以在任何J2EE组件中使用--所以,您 用Web服务。
|
Enterprise Java Beans 2.1--消息传递 |
EJB对消息传递的改进 范改进了消息驱动的bean( 型。同样,一个消息连接工 的地(这和ejb-ref允许您
|
是和Java Connector Architect MDB:message-driven bean), 具也被添加到部署描述符中,用 把EJB"勾"在一起的方式是很相
|
ure紧密联系在一起的。EJB 2.1规 使之允许任意的(非JMS)消息类 来指定组件发送消息的MBD或JMS目 似的)。
|
J2EE Connector Architecture 1.5 |
JCA 1.5规范有了很大 (如一个EIS系统)给应用 消息连接工具,该工具把入 和消息驱动的bean(MDB) 息进行排队以供MDB进行处
|
的变化。JCA 1.5的新变化是入 服务器发送消息。所以说JCA现 站适配器和处理这个消息的MDB 联系在一起的,入站适配器接收 理。这一特性的关键就在于MDB
|
站源适配器,它允许一个外部服务 在变成了双向的。伴随它的是一个 连接起来。在这里这个主要用例是 信息,处理信息生成消息,再把消 的变化使用非JMS的消息类型。
|
JCA其他方面的改进包括对管理所有 。工作管理器允许JCA使用线程,但不会
|
实现异步入站适配器所需线程的工作管理系统的改进 与其线程的应用程序管理发生冲突。
|
Servlet 2.4规范中Web 服务端点的能力。这给实现
|
服务方面的变化主要在于把JAX- Web服务提供了一种容易的方式
|
RPC类作为servlet部署来实现Web 。
|
编写一个基于servlet的Web服务端点 JAX-RPC工具从WSDL创建接口(或者是从 接口。然后用servlet元素(但不使用ser 个包含service-impl-bean和servlet-lin
|
和创建一个基于EJB的端点几乎毫无二致。使用 接口创建WSDL),再在一个普通的JAVA类中实现这个 vlet-mapping)在web.xml中声明这个类,再创建一 k元素的webservices.xml描述符文件。
|
Servlet 2.4也增加了listener来取 。
|
得属性(这就像现有的已经可用的会话属性监听器)
|
SingleThreadModel也 不能真正地解决Serverlet 域和方法,但是,毫无疑问 HttpSession中的对象)。 、线程安全的编程实践所替
|
不赞成使用了。如果您用过这个 的实时并发问题。SingleThread ,它没有保护其他资源的能力( 因此,SingleThreadModel将不 代。
|
接口,您一定已经知道实际上它并 Model只能保护单进程Serverlet的 像那些静态方法中的引用,或者 赞成使用,同时必将会被一种好的
|
JSP规范终于成熟了。在JSP 2.0中,终于可以编写无脚本的页面(没有任何"<% … %>"之类属于Java的代码)。 |
第一个改进就是增加了 标准标记库(JavaServer Pa 的语法,这种语法不再需要 XPath的,所以,它的语法
|
表达式语言(expression langu ges Standard Tag Library,JS 大部分的 "scriptlet"。EL是基 对于大多数Web开发者来说都会
|
age,EL),表达式语言来源于JSP TL)。EL是一种简单、精致和易用 于ECMAScript (JavaScript) 和 感觉似曾相识。
|
在JSP 2.0中也一样改进了标记库。 SimpleTag接口具拥有更简单简洁的生命 用。SimpleTag和它的JSPFragment搭档( tags" 所做的事情,不过和以前相比,可 记可以更容易地正确实现,这也就意味着
|
现如今,我们有更简单的API来书写标记了。 周期--只有一个doTag 方法并且没有实例缓冲池和重 用来评估标记体)可以完成现如今大多数 "classic 要省力气多了。此外,这些更为简单的API意味着标 bug更少。
|
另外一个对标记的改进在于编写标记 来实现的。编写标记文件是简单的,而部 foo.tag的名字放入WEB-INF/tags就万事 要信息都在标记文件其自身中进行了声明
|
文件的能力。这些标记是作为JSP文件而不是Java类 署就更简单了--您只要简单的把这些文件以类似 大吉了。不需要编写TLD描述符文件,因为所有的重 。
|
标记文件最大的优势是 出。以前,必须把HTML嵌入 能最自然的用法。这也向那 用于支持XML的语法,加入
|
在一些可视HTML元素需要标记之 到Java代码或采取包含页面的方 些非Java开发者打开了自制创建 了对JSR-45的支持,以及对其他
|
时。例如,对持续格式化bean的输 式。但是标记文件是这种类型的功 标记的大门。 JSP 2.0 还改进了 语言的调试支持。
|
JSP标准标记库(JavaS 记的集合。这些标记和JSP2 JSP 2.0规范的必需组成部 Sun 到 Apache),实在值
|
erver Pages Standard Tag Lib .0在其他方面的改进很好的融合 分。不过,由于它是如此得有用 得我们在此提及一下。
|
rary,JSTL)是一个非常有用的标 了起来。不幸的是,JSTL并不是 ,而且获得了广泛的支持(例如从
|
在新的版本中充满了新的内容,那么问题是如何来使用他们呢? |
JSP规范的所有这些改 代码的JSP页面了。并且, 用户界面(视图)和后端(
|
变都极大地改进了Web开发体验 简单标记和标记文件的可选性使 控制器)之间的分离也更好了。
|
。大家终于有可能编写不内嵌Java 标记变得更易编写且更易使用。在
|
消息传递在MDB 和JCA 之间的双向通讯会增进J2EE
|
方面的改进有很多意义。首先, 与现有企业的集成。
|
显而易见的是--应用服务器和EIS
|
但是其他的好处还远远 socket外,入站适配器有" 器来使您能telnet到应用服 的J2EE JCA组件,也可以实
|
不止这些。首先,除了那些被容 权"创建和监听socket。所以, 务器来执行一些管理任务。或者 现邮件服务器。这种可能性是无
|
器(RMI、IIOP和HTTP)所拥有的 比如说,您可以添加一个JCA适配 ,也可以将FTP服务器部署为标准 穷尽的。
|
另外一种可能性(这在规范中已有明 须实现JMS--但并没有指明对特定消息传 现他们自己的消息系统来支持JMS。并且 通讯。
|
确说明)是JMS提供者。J2EE规范要求应用服务器必 递系统的任何要求。因此,每个消息提供商通常要实 ,他们通常必须有外部系统与他们一同工作才能进行
|
有了J2EE 1.4,消息提 标准、可移植的JCA适配器 布者。然后,这个JCA能够 服务器之间的互操作性的潜
|
供商现在已经有可能创建自制他 一样。适配器的入站一端可以处 被部署到任何J2EE 1.4应用服务 在能力,至少对于JMS消息是这
|
们的JMS支持,像一个符合J2EE的 理消息使用者,而出站一端处理发 器中。这样就使其拥有了改进应用 样的。
|
有了J2EE 1.4规范,J2
|
EE已经和Web服务稳固的结合在
|
了一起。这就有了多种选择。
|
首先,如果您有现有的基于EJB的系 一些条目,任何无状态会话bean都可以当 互操作性。
|
统,则只要简单地在部署描述符中添加JAC接口以及 作Web服务来发布。这就打开了现有部署和Web服务的
|
对于新的Web服务,您 JAX-RPC)。不管采用哪种
|
可以像上面一样编写EJB的实现 方式,您都可以通过一些部署描
|
,也可以编写简单的Java类(使用 述符条目进行部署。
|
此外,您还可以利用J2EE应用程序中 时,使用JAX-RPC来调用Web服务。
|
的任何Web服务,方法是,在执行任何其他远程调用
|
对J2EE 1.4的增强都是 的改进用来增强企业后端。 些希望开发基于Web的用户 是一个很棒的组合。
|
不容置疑的,并且应增强J2EE平 增加对Web服务的支持改进了J2E 接口的人员来说,JSP的改进则
|
台的有用性和能力。JCA和MDB方面 E的有用性和互操作性。而对于那 降低了他们使用的门槛。总之,这
|
现在,最困难的事情摆 对所有这些好东西加以选择
|
在了您--J2EE开发者--的面前, 取舍。这将是件乐趣无穷的事情
|
您需要判定,如何来在您的项目中 。
|
|
|
|
|
|