快速业务通道

Java EE 5 - 强大的功能、高生产率和低复杂性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
Web 服务客户机。它还展示了 Java EE 5 中的简单 EJB 编程模型和 JSF 的基本原理。

注解:用更少的代码做更多工作

RideSynergy 以 Web 服务的形式提供统计数据,这个特性很好地说明了 Java EE 5 让我们能够用更少的代码做更多工作。这个特性是在 RideStatistics 类中实现的,它演示了最简单的 Java EE 5 注解形式。但是,简单并不意味着功能不强:它们说明,与 J2EE 1.4 方式相比,用 Java EE 5 方式实现这些特性要简单得多。

清单 1 中的 RideStatistics 类实现一个 Web 服务,它使用无状态 RideManagerBean 会话 bean,根据 Web 服务客户机指定的起点和终点 ZIP 编码查询匹配的车辆供应数量。RideManagerRemote 接口定义 RideManagerBean 上可供客户机代码使用的操作,客户机代码可以在同一个 JVM 中运行,也可以在其他 JVM 中运行。

清单 1. RideStatistics Web 服务

package com.ridesynergy; import java.util.Set; import javax.ejb.EJB; import javax.jws.WebService; /**   * Web Service that exposes a count of ride offers made to and from specific   * ZIP codes.   *   * @author smoore   */ @WebService public class RideStatistics {    @EJB    RideManagerRemote rideManager;   /** Creates a new instance of RideStatistics */   public RideStatistics() {   }    public Integer rideOffersFromZipCode(Integer zipCode) {     Set<Ride< results = rideManager.findCloseOfferMatches(zipCode, 0);     return new Integer(results.size()); }    public Integer rideOffersToZipCode(Integer zipCode) {     Set<Ride< results = rideManager.findCloseOfferMatches(0, zipCode);     return new Integer(results.size());    } }

清单 1 包含两个注解:@WebService 和 @EJB。首先,我要讨论如何通过 @EJB 注解用依赖项注入(dependency injection) 技术访问 EJB。然后讨论如何通过 @WebService 注解将一个 POJO 变成完整的 Web 服务端点。

Java EE 5 - 强大的功能、高生产率和低复杂性(6)

时间:2011-01-31 IBM Scott Moore

依赖项注入

如果您熟悉 J2EE 1.4 中的 EJB 编程,那么在看到 清单 1 时可能会问:真的 这么容易就获得了一个 EJB 的引用吗?是的,因为 @EJB 注解提供了一种基于依赖项注入的简单编程模型。

有了 @EJB 注解,就不再需要编写 J2EE 1.4 中的那些复杂代码(比如清单 2 中的代码):

清单 2. Java EE 5 之前的 RideManagerBean 客户机

. . .    Context initial = new InitialContext();    Context myEnv = (Context) initial.lookup("java:comp/env");    Object obj = myEnv.lookup("ejb/RideManager");    RideManagerHome home = (RideManagerHome) PortableRemoteObject.narrow(       obj, RideManagerRemote.class);    RideManager manager = home.create(); . . .

在 Java EE 5 支持的 EJB 3.0 编程模型中,这个 @EJB 注解注入 RideStatistics 对 RideManagerRemote 的依赖项,这样 RideStatistics 就不需要用 JNDI 查找引用。

它还避免了直接依赖于包含 RideManagerRemote 的包。看一下 import 语句;这里没有针对 RideManagerRemote 的 import 语句(但是,它却可以通过编译)。所以,可以将 RideManagerRemote 重构到另一个包中,而不需要更新和重新编译 RideStatistics。

注解还给依赖项的另一方面带来许多好处:实际 EJB 提供 RideManagerRemote 背后的实现并告诉 Java E

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号