Sun GlassFish Enterprise Server v3 发行说明

与应用程序相关的更改

Enterprise Server v3 与 Enterprise Server v2 之间存在与应用程序相关的差异。本节说明了部分差异。

force 选项

在 Enterprise Server v3 中,用于部署的 force 选项的默认值为 false。不过 Enterprise Server v2 中该默认值为 true。因此在 Enterprise Server v3 中,必须在重新部署时明确地将选项设置为 true。升级期间不会自动设置该选项。此更改的目的在于避免意外地覆写现有应用程序的内容。而且此更改会同时应用到管理控制台和命令行实用程序。

Enterprise Server v3 中的 asadmin redeploy 命令为新命令,相当于 --force=trueforce 选项仅适用于 deploy 命令(命令行界面)和 deploy 屏幕(控制台),而不适用于 redeploy 命令和 redeploy 屏幕。

应用程序和生成的目录布局

Enterprise Server v2 包含两个用于应用程序系统信息库的子目录:applications/j2ee-appsapplications/j2ee-modules。Enterprise Server v3 中不存在这些子目录(没有 j2ee-appsj2ee-modules 级别)。在 Enterprise Server v2 中,独立模块(例如 foo.war)部署在 applications/j2ee-modules/foo 之内,如今在 Enterprise Server v3 中,此类模块部署在 applications/foo 之内。企业应用程序和独立模块本质上共享同一名称空间,因此无需中间目录层。

domain.xml application 元素

在 Enterprise Server v3 中,以前的 web-moduleejb-module 等元素已过时,取而代之的是新的 application 元素。有关 application 元素的更多信息,请参见《Sun GlassFish Enterprise Server v3 Domain File Format Reference》中的“application”

升级期间会通过 domain.xml 中新的 application 元素将 Enterprise Server v2 应用程序重新部署到新的 applications/ 位置。将使用新目录结构和元素来部署在 Enterprise Server v3 上部署的所有新应用程序。

更严格的 JAR 可见性规则

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 引入的更严格的新行为:

《Sun GlassFish Enterprise Server v3 Upgrade Guide》中的第 1  章 “Application Server Compatibility Issues”中也探讨了对此行为的更改。

应用程序客户端 deploy --retrieveget-client-stubs 命令

在 Sun GlassFish Enterprise Server v3 中运行 deploy --retrieveget-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 目录的所有内容。