GlassFish Server 3.1 支持 JavaEE 6 Web Profile 与完整平台、集群和高可用性

阅读数:2880 2011 年 3 月 25 日

话题:JavaDevOps语言 & 开发架构文化 & 方法

最新版的GlassFish 应用服务器支持JavaEE 6 Web Profile和完整的平台、改进了 OSGi 支持、集群与高可用性(HA)等特性。近日,Oracle发布了该应用服务器的 3.1 版,分为商业版本(Oracle GlassFish Server)和开源版本(GlassFish Server Open Source Edition)两种。新的发布还提供了中心化的管理与改进的 JDBC 监控等功能。目前的 IDE 工具支持包括 NetBeans 与Eclipse 插件扩展,同时下一版本的Oracle Enterprise Pack for Eclipse也将得到升级以包含新的 GlassFish 3.1 服务器插件。

集群与 HA 支持包括可以通过基于 Web 的 Admin Console 或是命令行界面 CLI 为每个域创建多个集群,每个集群可以有多个实例,每个域最多可以有 100 个实例。HTTP、EJB、IIOP、SSO、Web Services Reliable Messaging 与 Secure Conversation 会话状态会在集群中得到均匀的复制。所有的管理与监控数据都可以通过 RESTful Web services 公开出来。基于 Web 的管理控制台也使用了同样的 RESTful 后端,这样开发者就可以使用同样的 API 将类似的功能集成到工具集或是 IDE 当中了。此外,现在可以同时部署一个应用的多个版本,并且可以在不同版本间变更。

OSGi 支持:运行时已经绑定了Apache Felix,它用作默认的 shell,但 GlassFish 也能在EquinoxKnopflerfish之上运行良好。OSGi 支持可以实现混合应用开发以利用 OSGi 模块化和 Java EE 编程模型所带来的好处。开发者可以在 Java EE 应用中使用 OSGi 服务,反之亦然。该支持还包含了将 Apache Felix 运行时升级到了 3.0.8 版,该版本包含了Apache Gogo shell。

Active Redeploy:新版本扩展了 GlassFish Server 3.0 Active Redeploy 特性,包含了 Stateful EJB 与 EJB Timer 组件。当使用redeploy 命令重新部署应用时,GlassFish 服务器会维护 HTTP session与 EJB 状态。在其 Embedded API 中还完整地支持 EJB 特性。

JDBC 监控:改进的 JDBC 监控可以检测 statement 泄漏、实现自动的监控、日志,当应用失败时可以自动回收数据库光标。该特性还包含了追踪 SQL 查询、应用数据库连接池的监控以及针对 JDBC 连接池的客户化验证模板。

应用范围内的资源:开发者可以使用该特性指定资源,如 JDBC 资源等,以在应用部署时创建这些资源。这样,开发者就可以将资源的范围限定为某个部署的应用,因此无需外部的部署脚本就能实现应用在多个 GlassFish 实例间的移植了。

单元测试:GlassFish 服务器可以使用 Maven 插件运行在嵌入式模式下以进行单元测试。开发者可以进行生命周期操作、以编程的方式部署应用并执行运行期配置,从而无需显式安装和启动应用服务器了。

除了上述特性,商业版的应用服务器还在 GlassFish Server Control 中提供了如下的附加特性:

  • DAS 备份与恢复——这是一种灾备恢复解决方案,管理员可以在出现问题时凭借该方案将现有的域进行归档并恢复。
  • 性能调优器(只有在线帮助)——可以分析底层基础设施,其性能可以达到 OOTB 的 3 倍。
  • 监控脚本客户端——可以使用 JavaScript 分析运行时并创建客户化的 dashboard。
  • Coherence Active Cache——可以与Oracle Coherence集成,使用 Oracle Coherence 替换掉内存会话复制,可以独立于会话复制层扩展应用层。
  • Oracle Access Manager集成——可以将认证与授权委托给 OAM。
  • 负载平衡与插件安装器——这是一个运行在 Oracle Web Server 上的反向代理引擎,能够获悉备份会话驻留的位置,从而进行智能恢复。

InfoQ 有幸采访到了 Oracle 的 Java EE 与 GlassFish 开发者Arun Gupta以深入了解此次发布的应用服务器的详细信息。

集群特性使用到Shoal 框架了么?与传统的集群实现相比,GlassFish 服务器的集群有何不同之处呢?

GlassFish 集群以管理域为中心,然后可以创建单独的服务器实例或是使用遍布在分布式机器上的多个实例创建集群。每个域可以创建多个集群,每个集群可以创建多个实例,每个域最多可以有 100 个实例。可以通过 SSH 配置与管理多台机器。每个集群中实例的配置都是一样的,这样就可以一键将 Web 应用部署到集群中了。GlassFish High Availability 还为 HTTP、EJB、IIOP、SSO,、Web Services Reliable Messaging 和 Secure Conversation 提供了会话复制能力。既可以针对整个会话,也可以仅针对修改的会话配置会话复制。

GlassFish 的商业版(Oracle GlassFish Server)也带有一个附加特性,可以使用 Oracle Coherence 替换掉内存中的会话复制,这样就可以将复制迁移到单独的层次上了。这还可以独立于会话复制层扩展应用层。

没错,GlassFish 使用了 Shoal(运行时的动态集群框架),它也作为内存复制模块的根基。Shoal GMS(Group Management Service)用于生命周期事件通知,现在使用了 Grizzly,而之前的版本使用的则是 JXTA,相对于 GlassFish v2 来说,性能提升了 33%。

能否详细谈谈 GlassFish 3.1 中的 OSGi 支持呢?

凭借 GlassFish 3.1,你可以轻松部署基于 OSGi 的 Java EE 应用,能够充分享受到 OSGi 所带来的好处,比如模块化、依赖管理、服务动态化以及 Java EE 的优势,如持久化、安全、事务以及其他服务。在 GlassFish 3.1 中,我们实现了 OSGi R4.2 Enterprise Specifications 中的几个 RFC。因此,OSGi 客户端可以轻松调用 Web 应用,Web 应用也可以通过标准的 Java EE API 和一些样板代码调用 OSGi 服务。

能否详细介绍一下 Active Redeploy?这与 WebLogic 10.3 中的“FastSwap”特性是否如出一辙呢?

Active Redeploy 特性是 IDE(NetBeans 或 Eclipse)与 GlassFish 的联合体,可以提升开发周期中开发者的生产力。当创建或保存了项目中的任何文件时,IDE 都可以将 Web 应用重新部署到底层的 GlassFish 服务器中。无论是 JSP 这样的静态文件,还是 EJB 或是 Servlet 类这样的动态文件都能得到很好的处理。该特性主要面向开发,我们并不建议在产品阶段中使用。注意:这是应用的完整部署,与“FastSwap”不同,后者的做法是监控,然后只重新加载改变的类文件。

对于开发、管理和监控来说,新版本提供了哪些支持工具呢?

NetBeans、Eclipse 和 IntelliJ 都已经围绕着 Java EE 6 提供了广泛的工具支持。除此以外,带有 GlassFish 插件的 NetBeans 7.0 和 Eclipse 3.6 都集成了 GlassFish 3.1。这样就可以使用这些 IDE 在 GlassFish Server 3.1 上开发、部署和调试 Java EE 6 应用了。

所有的管理与监控数据都通过 RESTful Web service 公开出来,这样就能与你所使用的工具无缝集成了。甚至连 GlassFish 基于 Web 的管理控制台也使用了这些 RESTful API。“asadmin” CLI 提供了你所选择对象的监控快照,比如 Web 容器,这是通过查询预先定义的试样(probe)实现的。我们可以通过基于 Web 的管理控制台或是 RESTful Web Services 在浏览器中获取到监控数据。还可以在 Solaris 10+ 上通过 DTrace 查看这些事件。甚至你自己的应用也可以生成监控数据,就像 GlassFish 一样,因为底层框架具有良好的可扩展性。如果你需要一些通用的内容,那么可以编写 JavaScript 程序搜集并处理数据。

中心化的 Web 管理控制台为集群的 CRUD、应用版本化、密码混淆等特性提供了完善的功能。

GlassFish v3.2 未来的路线图如何,会有哪些新特性呢?

GlassFish 3.2 会将精力放在虚拟化与 PaaS 功能上。GlassFish 4.0 的目标是实现 Java EE 7 的功能。总的来说,GlassFish 是 Oracle 应用服务器战略的重要棋子,因此将会长期发展下去。

感兴趣的读者可以试用 GlassFish Server Open Source Edition,如果觉得好,可以向 Oracle 购买商业支持。可以从 Oracle GlassFish Server 网站上下载 GlassFish 的商业版开源版(包括 API、指南和示例)。

读者可以参加“GlassFish 3.1 新特性”与“GlassFish 3.1 集群”在线研讨会以深入了解 GlassFish Server 3.1。

查看英文原文:GlassFish Server 3.1 Supports JavaEE 6 Web Profile & Full Platform, Clustering and High Availability