JavaEE5技术简介

NetBeans IDE 6.0 的开发是在 Java EE 和 Glassfish 工作组的密切合作下完成的,它实现了与新的 Java EE 5 规范的完美集成,从而可以在此 IDE 中轻松地使用新规范。NetBeans IDE 6.0 是您快速学习 Java EE 5 编程并使用它高效工作的最佳途径。

本文档介绍了 Java EE 5 规范的一些重要概念,以及它们如何与您目前的编程项目相关联的。本文将 介绍以下主题:

标注取代部署描述符

简化的 EJB 软件开发

使用依赖关系注入来访问资源

Java 持久性 API 模型

Web 服务

您可以在 Java EE 5 教程 中找到有关开发 Java EE 5 应用程序并在 Sun Java System Application Server Platform. Edition 9 上部署该应用程序的信息。

标注取代部署描述符

Java EE 5 平台不需要任何部署描述符(Servlet 规范所需的部署描述符 web.xml 文件除外),从而 简化了部署过程。其他部署描述符(如 ejb-jar.xml 以及在 web.xml 中与 Web 服务相关的条目)已过 时。J2EE 1.4 部署描述符通常很复杂,在填充它们时很容易出错。但是,Java EE 5 平台使用的是“标 注”。标注是 Java 修饰符,与代码中指定的 public 和 private 类似。例如,EJB 3 规范(Java EE 5 规范的子集)为 Bean 类型、接口类型、资源引用、事务属性、安全性等定义了标注。JAX-WS 2.0 规范 为 Web 服务提供了一组类似的标注。有些标注用来生成工件,另外一些标注用来描述代码,还有一些标 注用来提供增强的服务,如安全性或特定于运行时的逻辑。总之,Java EE 5 平台为以下任务(以及其他 任务)提供了标注:

定义和使用 Web 服务

开发 EJB 软件应用程序

将 Java 技术类映射到 XML

将 Java 技术类映射到数据库

将方法映射到操作

指定外部依赖关系

指定部署信息,其中包括安全属性

标注使用 @ 字符来标记。在 IDE 中,当您创建了使用 Java EE 5 中的标注的类型时,将在生成的代 码中提供相关的占位符。例如,当您使用 IDE 创建无态会话 Bean 时,将生成以下代码,其中包括 @Stateless() 标注:

package mypackage;import javax.ejb.*;@Stateless()public class HelloWorldSessionBean implements mypackage.HelloWorldSessionLocal {}

通过代码完成,您可以特定于光标下的项的标注属性进行访问。例如,在 @WebService() 标注的括号 中按 Ctrl+空格键时,将看到以下内容:

每个属性都拥有默认值。因此,除非您需要使用默认值以外的其他值,否则不必指定任何属性。在一 些简单的示例中,使用默认值就可以了,这意味着您根本不需要提供属性。

简化的 EJB 软件开发

使用新的 EJB 3.0 API,可以减少并简化开发人员需要完成的工作量,从而可以更轻松地进行软件开 发。换句话说,就是使用了更少的类和代码。这是因为现在容器承担了更多的工作,从而实现了这一目的 。下面是新 EJB 3.0 API 的一些功能和优点:

只需很少的类和接口。您不再需要 EJB 组件的 Home 接口和对象接口,因为现在容器负责公开必要 的方法。您只需提供业务接口。您可以使用标注来声明 EJB 组件,并且通过容器来管理事务。

不再需要部署描述符。您可以在类中直接使用标注,为容器提供以前在部署描述符中定义的依赖关 系和配置信息。如果没有任何特殊说明,容器将使用默认规则来处理最常见的情况。

查找简单。您可以通过 EJBContext 直接在类中查找 JNDI 名称空间中的对象。简化了对象关系映 射。

简化了对象关系映射。新的 Java 持久性 API 允许您使用 POJO 中的标注将 Java 对象映射到关系 数据库,从而使对象关系映射变得更简单透明。

在 IDE 中,您可以对 Enterprise Beans 进行编码,就像对其他 Java 类进行编码一样,方法是: 使用代码完成和编辑器提示实现正确的方法并使类与其接口保持同步。您不必使用特殊命令和对话框生成 诸如业务方法或 Web 服务作之类的内容,虽然这些命令仍可以帮助您熟悉 Java EE 5 代码的语法。

使用依赖关系注入来访问资源

通过 依赖关系注入,对象可以使用标注直接请求外部资源。这样代码会更简洁,因为您不再需要将代 码与资源创建和查找代码混杂在一起。您可以在 EJB 组件、Web 容器和客户端中使用资源注入。

要请求资源注入,组件需要使用 @Resource 标注或针对一些专用资源的 @EJB 和 @WebServiceRef 标注。您可以注入以下资源:

SessionContext 对象

DataSources 对象

EntityManager 接口

其他 Enterprise Beans

Web 服务

消息队列和主题

资源适配器的连接工厂

在 IDE 中,源代码编辑器为 Java EE 5 平台提供的资源注入标注提供了完整的代码完。此外,当您 运行诸如“调用 EJB”和“使用数据库”之类的命令时,IDE 会自动将资源注入到文件中。

Java 持久性 API 模型

Java EE 5 平台引入了新的 Java 持久性 API(它是作为 JSR-220 的一部分开发的)。Java 持久性 API 不但可以在 EJB 组件外部使用(例如,在 Web 应用程序和应用程序客户端中使用),而且还可以在 Java EE 平台之外的 Java SE 应用程序中使用。

Java 持久性 API 具有以下主要功能:

实体是 POJO。与使用容器管理持久性 (Container-Managed Persistence, CMP) 的 EJB 组件不同, 使用新 API 的实体对象不再是组件,并且它们不再需要位于 EJB 模块中。标准化的对象关系映射。

标准化的对象关系映射。新规范将对对象关系映射的处理方式进行标准化,从而使开发人员不再需要 了解特定于供应商的策略。Java 持久性 API 使用标注来指定对象关系映射信息,但它仍支持 XML 描述 符。

命名查询。现在命名查询是用元数据表示的静态查询。查询可以是 Java 持久性 API 查询或本地查询 。这样会使重用查询变得非常简单。

简单的打包规则。由于实体 Bean 是简单的 Java 技术类,因此几乎可以在 Java EE 应用程序中的任 意位置将其打包。例如,实体 Bean 可以是 EJB JAR、应用程序客户端 JAR、WEB-INF/lib、WEB- INF/classes 的一部分,甚至是企业应用程序归档(Enterprise Application Archive, EAR) 文件中实用 程序 JAR 的一部分。通过这些简单的打包规则,您不再需要创建 EAR 文件以使用来自 Web 应用程序或 应用程序客户端的实体 Bean。

分离的实体。由于实体 Bean 是 POJO,因此可以对它们执行序列化,通过网络其发送到其他地址空间 ,并在不识别持久性的环境中使用它们。这样,您就不再需要使用数据传输对象 (Data Transfer Object, DTO)。

EntityManager API。现在,应用程序编程人员可以使用标准 EntityManager API 来执行涉及实体的 创建、读取、更新和删除 (Create Read Update“删除”, CRUD) 操作。

IDE 提供了处理新 Java 持久性 API 的工具。您可以通过数据库自动生成实体类,或手动对实体类进 行编码。IDE 还提供了用于创建和维护持久性单元的模板和图形编辑器。

Web 服务

在 Java EE 5 平台中,通过使用标注显著改进和简化了 Web 服务支持。以下规范已应用于此领域中 :JSR 224,Java API for XML-Based Web Services (JAX-WS) 2.0;JSR 222Java Architecture for XML Binding (JAXB) 2.0 以及 JSR 181,Web Services Metadata for the Java Platform。

JAX-WS 2.0

JAX-WS 2.0 是 Java EE 5 平台中用于 Web 服务的新 API。作为 JAX-RPC 1.1 的后继者,JAX-WS 2.0 保留了自然的 RPC 编程模型,同时在以下几个方面进行了改进:数据绑定、协议和传输的独立性、 对 Web 服务的 REST 样式的支持以及易开发性。

与 JAX-RPC 1.1 的主要区别在于,现在所有数据绑定都委托给了 JAXB 2.0。这样,基于 JAX-WS 的 Web 服务就可以使用百分之百的 XML 架构,从而提高了互操作性和易使用性。这两种技术已很好地集成 在一起了,因此用户不必再为使用两套不同的工具而勉为其难了。从 Java 技术类开始开发时,JAXB 2.0 可以生成自动嵌入到 Web 服务描述语言 (Web Service Description Language, WSDL) 文档内的 XML 架 构文档,从而用户无需手动执行这一容易出错的集成。

现成的 JAX-WS 2.0 本身可以支持 SOAP 1.1、SOAP 1.2 和 XML/HTTP 协议。协议可扩展性从一开始 就是人们所希望实现的目标,JAX-WS 2.0 允许供应商支持其他协议和编码来获取更佳的性能(例如 FAST Infoset)或专用的应用程序。Web 服务(使用附件来优化大型二进制数据的发送和接收)可以利用 W3C 制订的 MTOM/XOP(“消息传输优化机制/XML 二进制优化打包”的简称)标准,且对编程模型没有任何不 利的影响(有关 MTOM/XOP 的信息,请参见 MTOM/XOP)。在 Java EE 5 技术出现之前,定义 Web 服务 需要使用很长且复杂的描述符。现在,定义它却非常简单,只需将 @WebService 标注放置在 Java 技术 类上即可。类上的所有公共方法会自动发布为 Web 服务操作,并且其所有参数都将使用 JAXB 2.0 映射 到 XML 架构数据类型。

异步 Web 服务

由于 Web 服务调用是通过网络来实现的,因此这种调用所花费的时间是无法预测的。许多客户端(特 别是交互式客户端,如基于 JFC/Swing 的桌面应用程序)由于必须等待服务器的响应而严重地影响了它 们的性能。为了避免出现性能降低,JAX-WS 2.0 提供了新的异步客户端 API。使用此 API,应用程序编 程人员不再需要自己创建线程,而是依赖于 JAX-WS 运行时为他们管理长时间运行的远程调用。

异步方法可以与 WSDL 生成的任何接口以及动态性更强的 Dispatch API 联合使用。为了方便起见, 在导入 WSDL 文档时,您可以要求为 Web 服务定义的任何操作生成异步方法。

以下提供了两种使用模型:

在轮询模型中,发出调用。准备就绪后,请求结果。

在回调模型中,注册处理程序。在响应到达后,立即向您发出通知。

请注意,异步调用支持是完全在客户端上实现的,因此不需要对目标 Web 服务进行任何更改。

IDE 提供了处理 JAX-WS 的工具。您可以使用“新建文件”向导中的模板生成 JAX-WS 工件。异步 Web 服务可以通过 Web 服务定制编辑器来创建。代码完成功能包括可以在 Web 服务中使用的标注。

人只要不失去方向,就不会失去自己

JavaEE5技术简介

相关文章:

你感兴趣的文章:

标签云: