Sun GlassFish Enterprise Server v3 为开发和部署 Java Platform, Enterprise Edition(Java EE 平台)应用程序以及基于 Java 技术的 Web 技术提供服务器。
本节说明 Enterprise Server 的以下新增功能:
Java EE 6 引入了配置文件的概念。配置文件 (profile) 是针对特定开发者社区和应用程序类型的 Java EE 技术和 API 的集合。
以下配置文件通过分发 Sun GlassFish Enterprise Server v3 来实现:
Full Platform Profile。该配置文件的使用对象是需要 Java EE API 完整集合来进行企业应用程序开发的开发者。安装 Sun GlassFish Enterprise Server v3 时会安装 Full Platform Profile。该配置文件也可作为 Java EE 6 SDK 安装的一部分安装。
Web Profile。该配置文件包含属于 Full Platform 一部分的 Web 技术,使用对象是不需要 Java EE API 完整集合的开发者。安装 Sun GlassFish Enterprise Server v3 Web Profile 时会安装 Web Profile。该配置文件也可作为 Java EE 6 Web Profile SDK 的一部分安装。
Java EE 6 SDK 分发可从 Java EE 6 SDK 下载页面 获取。
有关每个配置文件中的 API 列表,请参见Java EE 6 标准。
Sun GlassFish Enterprise Server v3 将 GlassFish 代码拆分为模块,以增强灵活性并提高运行时性能。模块化体系结构遵循 OSGi Alliance 标准实施,实现了 Enterprise Server v3 模块及其他模块的可重用性。
此设计更改让您可只使用部署的应用程序所需的模块。运行时环境仅用于必需的应用程序,并且可以在不重新安装整个系统的情况下实现升级。此更改最大程度地缩短了启动时间、降低了内存消耗并减少了磁盘空间需求。
此模块化设计可实现以下功能:
部署 OSGi 包
部署库 Java 归档 (Java Archive, JAR) 文件
用其他实现替换现有功能
新的 Sun GlassFish Enterprise Server v3 容器系统提供者接口 (system provider interface, SPI) 定义了容器开发者必须实现以便 Enterprise Server 可随时调用的接口。此更改允许 Enterprise Server 用户通过添加管理命令和图形附加组件创建自定义应用服务器。
Enterprise Server 还提供对新模块类型(如 Ruby on Rails)的简化支持。
更新工具现已嵌入到 Sun GlassFish Enterprise Server v3 管理控制台。此工具有利于管理可用于扩展 Enterprise Server v3 功能的附加组件及相关应用程序。
管理控制台可通过导航树访问更新工具页面。更新工具页面提供有一些选项卡,可显示以下内容:
已安装的组件
已安装组件的可用更新
可用且可安装的附加组件
在管理控制台中集成更新工具使管理员可方便地扩展 Enterprise Server 并查看可用的更新。可通过 updatetool 命令来使用更新工具的独立版本。有关更新工具的更多信息,请参见《Sun GlassFish Enterprise Server v3 Administration Guide》中的“Update Tool”。
无法使用管理控制台中的更新工具界面来更新现有组件。要更新或删除已安装组件,必须使用独立命令行版本或 pkg 命令。
更新工具由更新中心 项目开发。管理控制台使用 Update Center 2.3 API 显示可用的组件、版本和日期的列表。有关 Update Center 2.3 的信息,请参见 Update Center 2.3 发行说明。
更新工具与升级工具不同,后者用于从 Enterprise Server 的较早版本将配置和已部署应用程序迁移到当前版本。有关“升级工具”的更多信息,请参见《Sun GlassFish Enterprise Server v3 Upgrade Guide》。
为加快应用程序开发和部署,Sun GlassFish Enterprise Server v3 支持各种脚本语言。脚本语言的使用使得 Enterprise Server 的应用得以超出集中于 Java 技术开发的范围。支持的脚本语言包括:
JRuby 和 Rails:脚本语言和用于开发 Web 应用程序的框架
Grails:Web 应用程序框架,利用 Groovy 编程语言并对 Java Web 开发进行了补充
Jython 和 Django:Python 语言的 Java 实现和用于 Python 和 Python 实现(例如 Jython)的 Web 框架
jMaki:用于创建 Ajax Web 应用程序的框架
对这些脚本语言提供支持的组件均可通过“更新工具”找到。
Sun 与 Microsoft 密切合作,以确保 Web 服务企业技术(例如消息优化、可靠的消息传送和安全性)的互操作性。WSIT 便是这一通力合作的产品。WSIT 是 Metro 2.0 的一部分,Metro 2.0 是高性能的可扩展 Web 服务栈,它提供与 Microsoft .NET 3.5 的互操作性。Metro 2.0 包括在 Enterprise Server v3 的完整分发中。
WSIT 是多个开放式 Web 服务规范的实现,用以支持企业功能。除了消息优化、可靠的消息传送和安全性之外,WSIT 还包括引导和配置技术。从当前 Java 平台上内置的核心 XML 支持开始,WSIT 使用或扩展了现有的功能,并添加了新的对可互操作 Web 服务的支持,其中包括:
引导和配置
消息优化技术
可靠的消息传送技术
安全性技术
在本发行版本中,appclient 实用程序具备以下增强功能:
appclient 实用程序可接受与 Java 应用程序启动器 (java) 的语法类似的备用命令行语法。
添加了 -targetserver 选项以启用要指定的目标的服务器和端口号。
应用程序客户端中支持闪屏。
有关更多信息,请参见 appclient(1M) 手册页。
Sun GlassFish Enterprise Server v3 将 EclipseLink 用作其 Java 持久性 API (Java Persistence API, JPA) 2.0 提供者。EclipseLink 也是 JSR 317 的参考实现。有关 EclipseLink 功能性的最新信息,请参见 EclipseLink 2.0 发行说明。
在 Sun GlassFish Enterprise Server v3 中,大多数“HTTP 服务”设置已移动到新的“网络服务”配置。有关更多信息,请参见《Sun GlassFish Enterprise Server v3 Upgrade Guide》。
在 Sun GlassFish Enterprise Server v3 中,默认情况下不会对管理凭证进行提示。这不同于之前的发行版本。
如果使用 ZIP 文件安装 Enterprise Server,则在启动管理控制台或使用 asadmin 实用程序以及远程子命令来执行管理任务时,不会对管理凭证进行提示。
使用自解压文件和图形安装程序安装 Enterprise Server v3 时,只有在安装期间在“Administration Settings”页面上指定了用户名和密码后才会对管理凭证进行提示。如果接受该页面上的默认设置,则默认管理用户为 admin,并且密码字段为空。
如果仅有一个无密码的 admin 用户,则允许未经验证的登录。有关管理员验证的更多信息,请参见《Sun GlassFish Enterprise Server v3 Administration Guide》中的“To Log In to a Domain”。
可在安装 Enterprise Server 后更改管理员验证要求。有关使用管理控制台执行此操作及相关任务的信息,请参见管理控制台联机帮助。有关使用命令行界面的信息,请参见《Sun GlassFish Enterprise Server v3 Administration Guide》中的“Administering Passwords”。
已修改 asadmin 实用程序的行为来强调 asadmin 实用程序自身的选项与其子命令的选项之间的区别。现在允许在子命令前使用 asadmin 实用程序自身的选项。然而,为与其他发行版本兼容,仍允许在子命令后使用 asadmin 实用程序自身的选项,但此类语法已过时。
有关更多信息,请参见《Sun GlassFish Enterprise Server v3 Administration Guide》中的“Using the asadmin Utility”。
与之前的发行版本相比,Sun GlassFish Enterprise Server v3 对文件布局进行了以下更改:
默认安装目录为:
Solaris、Linux 和 Mac OS X 系统:user's-home-directory /glassfishv3
Windows 系统:SystemDrive :\glassfishv3
添加了 glassfish 子目录,而且该目录之下存在其他子目录。
产品库从 glassfish/lib 移动至 glassfish/modules。
添加了 osgi 目录。
为法律文件添加了指定目录。许可证和版权文件现在位于 glassfish/legal。
Sun GlassFish Message Queue 安装在顶层目录而非子目录中。
Java DB 安装在顶层目录而非子目录中。
Sun GlassFish Enterprise Server v3 提供服务器特定的 Ant 任务,因此必须安装 Ant。发行版本中未包括 asant 实用程序。
Enterprise Server 与 Apache Ant 版本 1.6.5 或更高版本兼容。如果未安装 Ant,可使用更新工具进行安装。
有关更新工具的更多信息,请参见《Sun GlassFish Enterprise Server v3 Administration Guide》中的“Update Tool”。有关 Ant 任务的更多信息,请参见《Sun GlassFish Enterprise Server v3 Application Development Guide》中的第 3 章 “Using Ant with Enterprise Server”。
因为 Sun GlassFish Enterprise Server v3 为模块化和可扩展的,所以无法通过静态 DTD 文件来验证 domain.xml 文件。而是需要通过源代码中的 @Configured 注释来对 domain.xml 文件进行验证。有关 domain.xml 文件结构的更多信息,请参见《Sun GlassFish Enterprise Server v3 Domain File Format Reference》。
Enterprise Server v3 与 Enterprise Server v2 之间存在与应用程序相关的差异。本节说明了部分差异。
在 Enterprise Server v3 中,用于部署的 force 选项的默认值为 false。不过 Enterprise Server v2 中该默认值为 true。因此在 Enterprise Server v3 中,必须在重新部署时明确地将选项设置为 true。升级期间不会自动设置该选项。此更改的目的在于避免意外地覆写现有应用程序的内容。而且此更改会同时应用到管理控制台和命令行实用程序。
Enterprise Server v3 中的 asadmin redeploy 命令为新命令,相当于 --force=true。force 选项仅适用于 deploy 命令(命令行界面)和 deploy 屏幕(控制台),而不适用于 redeploy 命令和 redeploy 屏幕。
Enterprise Server v2 包含两个用于应用程序系统信息库的子目录:applications/j2ee-apps 和 applications/j2ee-modules。Enterprise Server v3 中不存在这些子目录(没有 j2ee-apps 或 j2ee-modules 级别)。在 Enterprise Server v2 中,独立模块(例如 foo.war)部署在 applications/j2ee-modules/foo 之内,如今在 Enterprise Server v3 中,此类模块部署在 applications/foo 之内。企业应用程序和独立模块本质上共享同一名称空间,因此无需中间目录层。
在 Enterprise Server v3 中,以前的 web-module、ejb-module 等元素已过时,取而代之的是新的 application 元素。有关 application 元素的更多信息,请参见《Sun GlassFish Enterprise Server v3 Domain File Format Reference》中的“application”。
升级期间会通过 domain.xml 中新的 application 元素将 Enterprise Server v2 应用程序重新部署到新的 applications/ 位置。将使用新目录结构和元素来部署在 Enterprise Server v3 上部署的所有新应用程序。
Java EE 6 引入了比 Java EE 5 更严格的 JAR 可见性规则。因此某些版本更低的应用程序可能会失败。
Java EE 6 规范 引入了严格的规则,规定企业归档 (enterprise archive, EAR) 文件中有哪些 JAR 文件可见。请参见特殊章节 EE.8.3.3。具体而言,只有在应用程序客户端 JAR 文件的清单 Class-Path 显式地引用了 EJB JAR 文件的情况下,应用程序客户端模块才能访问 EJB JAR 文件。
这是针对 Enterprise Server v2 的更改(在此发行版本中,应用程序客户端自动拥有访问 EAR 文件中的所有 EJB JAR 文件,以及位于 EAR 文件顶层的所有 JAR 文件的权限)。为遵守这一更严格的规范语言,Enterprise Server v3 无法自动向应用程序客户端提供对这些 JAR 文件的访问权。
可按照以下方法处理这一由 Java EE 6 引入的更严格的新行为:
如果将应用程序部署到 Enterprise Server v2 域,“升级工具”将保留应用程序在该域中的 Enterprise Server v2 行为。有关升级的更多信息,请参见《Sun GlassFish Enterprise Server v3 Upgrade Guide》。
更改客户端的 Class-Path 清单以使其显式地引用其所依赖的 JAR 文件。Class-Path 不得列出 EAR 文件的库目录中的 JAR 文件。按照规范要求,EAR 文件中的所有模块都可使用该目录中的所有 JAR 文件。该目录默认为 /lib,也可使用 application.xml 描述符中的 library-directory 将其设置为其他目录。
使用可选的 --property compatibility=v2 设置来部署 EAR 文件。这样就可在将应用程序部署到 Enterprise Server v3 时保留其 Enterprise Server v2 行为。
《Sun GlassFish Enterprise Server v3 Upgrade Guide》中的第 1 章 “Application Server Compatibility Issues”中也探讨了对此行为的更改。
在 Sun GlassFish Enterprise Server v3 中运行 deploy --retrieve 和 get-client-stubs 命令时,将不再像在 Enterprise Server v2 中那样仅将一个 JAR 文件下载到本地目录。在 Enterprise Server v3 中,除了仍然会创建 localdir/myAppClient.jar 并可在 appclient 命令中将其作为目标外,还会创建另一个目录 localdir/myAppClient ,进而可包含其他文件。
之前可通过复制单个 Enterprise Server v2 下载 JAR 文件来将应用程序客户端组件从一个位置移动到另一位置,但是此方法在 Enterprise Server v3 中不起作用。现在支持的方法是使用 asadmin get-client-stubs 命令执行此操作。有关该命令的更多信息,请参见 get-client-stubs(1)。
如果仍然选择复制,就必须同时复制 localdir/myAppClient.jar 文件(与在 Enterprise Server v2 中一样)和 localdir/myAppClient 目录的所有内容。