WebSphere Application Server V8.5 中的系统管理,第 4 部分: 使用可插拔 SDK 7 启用 WebSphere Application Server for Java 7

本文将说明如何使 IBM® WebSphere® Application Server 能够使用 IBM Software Development Kit, Java™ Technology Edition Version 7.0。 本文来自于 IBM WebSphere Developer Technical Journal 中文版

Larry Hall, System i 的 WebSphere Application Server 架构师, IBM

Larry Hall 目前是 IBM i 的 WebSphere Application Server 架构师,以前曾在 Midrange Computing 和 eServer 杂志上发表了大量与应用程序安全性有关的文章。自 1984 年加入 IBM 后,他参加了软件工具开发,直到 1999 年加入 WebSphere Application Server 开发团队。



Xiaoshan Odom, 软件开发工程师, IBM

Xiaoshan (Susan) Z. Odom 目前是 WebSphere Application Server System Management 团队的一名软件工程师。她自 WebSphere Application Server Version 3.5 起开始研究 WebSphere Application Server 命名服务和系统管理。目前她主要研究 WebSphere Application Server 系统管理区域。



Cindy Schneider, 顾问软件工程师, IBM  

Cindy Schneider 是德克萨斯 Austin IBM 实验室的顾问软件工程师。Cindy 从 6.0 版开始从事 WebSphere Application Server 管理控制台。



George Silber, 顾问软件工程师, IBM

George Silber 自 1988 年起开始成为 IBM 的一名软件工程师。在过去 12 年中,他一直是 Websphere Application Server 开发团队的成员,参与了 3.5 版的开发。在 8.0 版中,他负责实现用于 Websphere 可插拔 SDK 支持的 managesdk 命令行接口。



2013 年 1 月 21 日

简介

使用 IBM Software Development Kit, Java Technology Edition V7.0 (SDK 7) 作为 IBM WebSphere Application Server V8.5 的一个可选、可插拔的软件开发工具包是受支持的,而 IBM Software Development Kit, Java Technology Edition V6.0 (SDK 6) 仍然是默认的 SDK。

早期版本的 WebSphere Application Server 仅支持一个 SDK 版本。例如,WebSphere Application Server Versions 7.0 和 8.0 都支持 SDK 6。从这两个版本升级到 WebSphere Application Server V8.5 后,您可继续在 SDK 6 上运行旧有的应用,也可以选择在 SDK 7 上运行它们。

可插拔 SDK 是一个 Java 软件开发人员工具包的一个可用于 WebSphere Application Server 的版本。对于 WebSphere Application Server V8.5,可插拔 SDK 是 IBM WebSphere Software Development Kit, Java Technology Edition V7.0(在 System z® 和分布式平台上)和 IBM Technology for Java 7.0(在 System i® 上)。

WebSphere Application Server V8.5 包含有关它支持的 SDK 的信息(SDK 名称、版本、位架构和位置等)。作为默认 SDK,在 z/OS® 和分布式平台上,SDK 6 随 WebSphere Application Server V8.5 一起安装,而在 IBM i 系统上是独立安装的。当安装一个可选的 SDK(比如 SDK 7)时,相关产品会检测到它并使它变为可用;类似地,如果卸载某个可选 SDK,那么就不会再检测到它,并且它不再可用。使 WebSphere Application Server 能够使用可用的 SDK,该操作是使用下面描述的命令和接口来完成的。


使 WebSphere Application Server 能够使用 SDK 7

首先,您需要 安装 SDK 7。完成安装之后,您将能够:

以下各节包含执行这些任务的详细信息和说明。

安装 SDK 7

IBM WebSphere SDK Java Technology Edition Version 7.0 是使用 z/OS 和分布式操作系统上的 IBM Installation Manager 来安装的。请参阅 WebSphere Application Server V8.5 信息中心 中的 安装和卸载 SDK Java Technology Edition Version 7.0,获得有关的完整说明。

对于 System i,SDK 7 为 IBM System i 7.1 提供了 5761JV1 选项 14(Java SE 7 32 位)和选项 15(Java SE 7 64 位);但是,Java SE 7 不可用于 IBM System i 6.1。有关的更多信息,请参阅 WebSphere Application Server V8.5 信息中心,以了解 System i 前提条件。

安装 SDK 7 后,重新启动以下所有类型的服务器,触发对 SDK 7 的节点元数据属性的更新:

  • 节点代理服务器
  • 独立应用服务器
  • 管理服务器(部署管理器服务器、管理代理服务器或作业管理器服务器)

类似地,卸载一个 SDK 后,您必须重新启动这些类型的服务器,触发从节点元数据属性中删除与已卸载 SDK 有关的信息的操作。

列出可用的 SDK

通过列出可用的 SDK,您能够确定一个可用 SDK 7 安装的名称,从而告诉 WebSphere Application Server 使用该安装。

使用 managesdk –listAvailable 命令和 –verbose 选项列出每个可用 SDK 的名称以及与它有关联的属性值(清单 1)。

清单 1
C:\wasInstalls\v85\Base\bin>managesdk.bat -listAvailable -verbose
CWSDK1003I: Available SDKs :
CWSDK1005I: SDK name: 1.6_32
 - com.ibm.websphere.sdk.version.1.6_32=1.6
 - com.ibm.websphere.sdk.bits.1.6_32=32
 - com.ibm.websphere.sdk.location.1.6_32=${WAS_INSTALL_ROOT}/java
 - com.ibm.websphere.sdk.platform.1.6_32=windows
 - com.ibm.websphere.sdk.architecture.1.6_32=x86_32
 - com.ibm.websphere.sdk.nativeLibPath.1.6_32=${WAS_INSTALL_ROOT}/lib/native/win/x86_32/

CWSDK1005I: SDK name: 1.7_32
 - com.ibm.websphere.sdk.version.1.7_32=1.7
 - com.ibm.websphere.sdk.bits.1.7_32=32
 - com.ibm.websphere.sdk.location.1.7_32=${WAS_INSTALL_ROOT}/java_1.7_32
 - com.ibm.websphere.sdk.platform.1.7_32=windows
 - com.ibm.websphere.sdk.architecture.1.7_32=x86_32
 - com.ibm.websphere.sdk.nativeLibPath.1.7_32=${WAS_INSTALL_ROOT}/lib/native/win/x86_32/

CWSDK1001I: Successfully performed the requested managesdk task.

在上面的示例中,SDK 7 安装的 SDK 名称为 1.7_32。我们知道此名称是因为 com.ibm.websphere.sdk.version.1.7_32 属性的值为 1.7,而不是因为 SDK 名称恰好包含该版本 (1.7)。即使所有当前支持的 SDK 名称都遵循模式 <version>_<bitness>,支持 SDK 名称也没有正式的约定。因此,查找它的一个好方法是使用 managesdk –listAvailable 命令和 –verbose 选项。如果没有使用 -verbose 选项,那么只会列出 SDK 名称

使命令能够将 SDK 7 用作命令默认 SDK

将命令默认 SDK 设置为 SDK 7 后,在从 WebSphere Application Server 安装根目录下的 bin 目录 (<was_install_root>/bin) 发出命令时,该命令将会使用 SDK 7,除非在命令行指定了一个有效的配置文件名称(比如 -profileName myprofile)或存在一个默认配置文件,在这种情况下,为指定的或默认配置文件启用的 SDK 会分别覆盖该命令的默认 SDK。但是,从 WebSphere Application Server 配置文件个目录下的 bin 目录调用的命令始终使用为该配置文件启用的 SDK。

开始之前,列出可用的 SDK,以确定可用的 SDK 7 安装的 SDK 名称,然后使用 managesdk –setCommandDefault 命令和 –sdkName 选项使命令能够使用 SDK 7(清单 2)。

清单 2
C:\wasInstalls\v85\Base\bin>managesdk.bat -setCommandDefault
-sdkName 1.7_32
CWSDK1021I: The command default SDK name is now set to 1.7_32.
CWSDK1001I: Successfully performed the requested managesdk task.

C:\wasInstalls\v85\Base\bin>

使新配置文件能够使用 SDK 7

使新配置文件能够使用 SDK 7 后,会在最初自动启用后续创建的所有配置文件,以便使用 SDK 7。

开始之前,列出可用的 SDK,以确定可用的 SDK 7 安装的 SDK 名称,然后使用 managesdk –setNewProfileDefault 命令和 –sdkName 选项使新配置文件能够使用 SDK 7。清单 3 中的示例假设一个可用的 SDK 7 安装的 SDK 名称为 1.7_32。

清单 3
C:\wasInstalls\v85\Base\bin>managesdk.bat -setNewProfileDefault 
-sdkName 1.7_32
CWSDK1022I: New profile creation will now use SDK name 1.7_32.
CWSDK1001I: Successfully performed the requested managesdk task.

C:\wasInstalls\v85\Base\bin>

使独立应用服务器配置文件和管理配置文件能够使用 SDK 7

以下配置文件类型属于此类别:

  • 独立应用服务器配置文件
  • 自定义配置文件
  • 管理配置文件,包括部署管理器配置文件、管理代理配置文件和作业管理器配置文件

您可使用以下方法为这些配置文件启用 SDK 7:

  1. 使用 managesdk 命令

    开始之前:

    1. 停止受影响的服务器。
    2. 列出可用的 SDK,确定可用的 SDK 7 安装的名称。

    调用 managesdk –enableProfile 命令和 –enableServers 选项使独立应用服务器配置文件或管理配置文件能够使用 SDK 7。例如,假设可用的 SDK 7 安装的 SDK 名称为 1.7_32,并且配置文件 “server1” 定义了一个独立或管理服务器,调用 managesdk(如清单 4 所示)来确保配置文件 server1 和它定义的服务器已经启用了 SDK 7 使用能力。

    清单 4
    >cd <WAS_INSTALL_ROOT>\bin
      $       
    > managesdk.bat -enableProfile 
                -profileName server1 
                -sdkName 1.7_32 
                -enableServers  
      CWSDK1017I: Profile server1 now enabled to use SDK 1.7_32.
      CWSDK1001I: Successfully performed the requested managesdk task.

    此外,如果在单元中启用了管理安全,可以在命令中使用 –user–password 选项来提供用户名和密码;否则,您可以配置脚本安全性。请参阅 WebSphere Application Server V8.5 信息中心,了解有关的详细信息。

  2. 使用 AdminTask SDK 命令

    可使用两个 AdminTask SDK 命令使独立服务器配置文件能够使用 SDK 7,一个命令在节点级别上,另一个命令在服务器级别上。

    对一个给定节点使用 AdminTask.setNodeDefaultSDK(),在节点级别上使独立服务器配置文件能够使用 SDK 7

    1. 停止服务器。
    2. 在独立服务器配置文件的 bin 目录中,在本地模式下启动 wsadmin 工具(清单 5)。
      清单 5
      cd <profile_directory>/bin
      c:\<profile_directory>\bin> wsadmin.bat -conntype none -lang jython
    3. 找到将用于给定节点的可用的 SDK 名称(仅在从节点元数据属性中收集了 SDK 信息后,清单 6 中的 AdminTask 命令才会将新安装的 SDK 显示为节点的可用 SDK)。
      清单 6
      wsadmin>print AdminTask.getAvailableSDKsOnNode('[-nodeName myNodeName]')
      1.6_32
      1.7_32
    4. 在 wsadmin 提示符下,运行 AdminTask.setNodeDefaultSDK() 命令(清单 7)。
      清单 7
      wsadmin>AdminTask.setNodeDefaultSDK('[-nodeName myNode –sdkName 1.7_32 
      	–clearServerSDKs true]')
      ’’
      wsadmin>AdminConfig.save()
    5. 可选地,验证节点默认 SDK 已经设置为 1.7_32(清单 8)。
      清单 8
      wsadmin>AdminTask.getNodeDefaultSDK('[-nodeName myNode]')
      '[[javahome ${JAVA_LOCATION_1.7_32}] [sdkname 1.7_32]]'
      wsadmin>quit
    6. 成功地将节点设置为能够使用 SDK 7 后,重新启动服务器来运行 SDK 7。

    请注意:

    • AdminTask.setNodeDefaultSDK() 命令的 -clearServerSDKs 参数可以清除服务器级 SDK 设置,并使服务器能够使用节点级默认 SDK。
    • 如果指定的节点是一个部署管理器节点,那么只有部署管理器服务器能够使用节点级默认 SDK。

    使用 AdminTask.setServerSDK() 使独立服务器配置文件能够在服务器级别上使用 SDK 7

    1. 停止服务器。
    2. 在独立服务器配置文件的 bin 目录中,在本地模式下启动 wsadmin 工具(清单 9)。
      清单 9
      cd <profile_directory>/bin
      c:\<profile_directory>\bin> wsadmin.bat -conntype none -lang jython
    3. 找到可用的 SDK 名称,以便将它用于其父节点(仅在从节点元数据属性中收集了 SDK 信息后,清单 10 中的 AdminTask 命令才会将新安装的 SDK 显示为节点的可用 SDK)。
      清单 10
      wsadmin>print AdminTask.getAvailableSDKsOnNode('[-nodeName myNodeName]')
      1.6_32
      1.7_32
    4. 在 wsadmin 提示符下,运行 AdminTask.setServerSDK() 命令(清单 11)。
      清单 11
      wsadmin>AdminTask.setServerSDK('[-nodeName myNode –serverName myServer 
      	–sdkName 1.7_32]')
      ’’	
      wsadmin>AdminConfig.save()
    5. 可选地,验证服务器 SDK 已经设置为 1.7_32(清单 12)。
      清单 12
      wsadmin>AdminTask.getServerSDK('[-nodeName myNode –serverName myServer]')
      '[[javahome ${JAVA_LOCATION_1.7_32}] [sdkname 1.7_32]]'
      wsadmin>quit
    6. 将节点成功设置为使用 SDK 7 后,重新启动服务器,以便在 SDK 7 中运行。
  3. 使用管理控制台

    SDK 7 应已安装在包含您希望更新的服务器的节点上。必须重新启动 nodeAgent 或单一服务器,然后才可以使用节点元数据。

    要在单一服务器上启用 SDK 7,无论是在独立部署环境中还是在网络部署 (ND) 环境中,请导航到服务器细节面板 (Servers > Server Types > Application Server > ServerName),在 Server Infrastructure 部分中选择 Java SDKs 链接(参见图 1)。

    图 1. 描述?
    图 1. 描述?

    如果 SDK 7 已正确安装并且已经重新启动节点代理或服务器,那么在选择 Java SDKs 后您应该看到图 2。

    图 2. 描述?
    图 2. 描述?

    选择 SDK 7 安装,并单击 Make Default 按钮将 SDK 7 设置为默认 SDK。当控制台显示 Save 或 Review 链接时,选择 Save。如果在 ND 环境中运行,并且没有设置自动同步的控制台首选项,那么必须手动同步该节点。执行同步后,必须重新启动服务器才能使更改生效。

    控制台发出的用来修改和显示可用 SDK 列表的 AdminTask 命令如图 3 所示。

    图 3. 描述?
    图 3. 描述?

使托管节点/服务器/集群能够使用 SDK 7

在使托管节点能够在安装 SDK 7 之后使用该 SDK 之前,WebSphere Application Server 安装中的所有节点代理服务器都应在部署管理器服务器运行期间停止并重新启动。这有助于触发将新安装的 SDK7 信息添加到节点元数据属性中的操作,从而使 SDK 7 可供某个节点使用。

要为一个联合配置文件或节点配置 SDK 7,请使用 managesdk 命令或 AdminTask.setNodeDefaultSDK() 命令。

  1. 使用 managesdk 命令

    开始之前:

    1. 启动节点代理。
    2. 列出可用的 SDK,以确定可用 SDK 7 安装的名称。
    3. 确保部署管理器正在运行。联合配置文件的 SDK 配置更改是通过更改部署管理器的主配置存储库来实现的,不是直接通过更改联合配置文件的配置来实现的。

    调用 managesdk –enableProfile 命令和 –enableServers 选项,使联合配置文件能够使用 SDK 7。例如,假设一个可用 SDK 7 安装的 SDK 名称为 1.7_32,并且配置文件 fedProfile1 是要启用 SDK 7 使用能力的联合配置文件,那么可以调用 managesdk -enableProfile 命令(如清单 13 中所示)来确保 fedProfile1 配置文件和它定义的节点上的服务器已启用了 SDK 7 使用能力:

    清单 13
    > managesdk.bat -enableProfile 
                 -profileName fedProfile1 
                 -sdkName 1.7_32
                 -enableServers
       CWSDK1024I: The node default SDK setting for federated profile fedProfile1 has 
    been saved in the master configuration repository.
       CWSDK1025I: A synchronization operation is required before configuration changes 
    to federated profile fedProfile1 can be used.   
       CWSDK1017I: Profile fedProfile1 now enabled to use SDK 1.7_32.
       CWSDK1001I: Successfully performed the requested managesdk task.
     >

    此外,如果在单元中启用了管理安全,那么您可以在命令上使用 –user 和 –password 选项提供用户名和密码;否则可为脚本配置安全性。请参阅 WebSphere Application Server V8.5 信息中心,了解有关的详细信息。

    在联合节点中的应用服务器可以使用这个新 SDK 设置之前,您必须执行一个同步操作。

  2. 使用 AdminTask.setNodeDefaultSDK() 命令
    1. 启动一个托管节点的部署管理器服务器,如果尚未运行该服务器。
    2. 在部署管理器服务器配置文件的 bin 目录中,在连接模式下启动 wsadmin 工具(清单 14)。
      清单 14
      cd <profile_directory>/bin
      c:\<profile_directory>\bin> wsadmin.bat -conntype SOAP –port dmgr_soap_port 
      	-lang jython
    3. 运行清单 15(查找一个节点的可用 SDK 名称)和清单 16(查找一个节点的可用 SDK 安装位置)中所示的命令,查找可供使用的 SDK。
      清单 15
      wsadmin>print AdminTask.getAvailableSDKsOnNode('[-nodeName myNodeName]')
      1.6_32
      1.7_32
      清单 16
      wsadmin>AdminTask.getSDKPropertiesOnNode('[-nodeName myNodeName -sdkName 1.7_32 
      	-sdkAttributes [location ]]')
      '[com.ibm.websphere.sdk.location.1.7_32 ${WAS_INSTALL_ROOT}/java_1.7_32]'
    4. 在 wsadmin 提示符下,运行 AdminTask.setNodeDefaultSDK() 命令(清单 17 或清单18)。
      清单 17
      wsadmin>AdminTask.setNodeDefaultSDK('[-nodeName myNode –sdkName 1.7_32 
      	–clearServerSDKs true]')
      ’’	
      wsadmin>AdminConfig.save()
      清单 18
      wsadmin>AdminTask.setNodeDefaultSDK('[-nodeName myNode -javahome 
      	${WAS_INSTALL_ROOT}/java_1.7_32]')
      ’’	
      wsadmin>AdminConfig.save()
    5. 可选地,验证节点默认 SDK 已经设置为 1.7_32(清单 19 或清单 20)。
      清单 19
      wsadmin>AdminTask.getNodeDefaultSDK('[-nodeName myNode]')
      '[[javahome ${JAVA_LOCATION_1.7_32}] [sdkname 1.7_32]]'
      清单 20
      wsadmin>AdminTask.getNodeDefaultSDK('[-nodeName myNode]')
      '[[javahome ${WAS_INSTALL_ROOT}/java_1.7_32] [sdkname 1.7_32]]'
    6. 默认情况下,节点的 SDK 更改会定期传播到受影响的节点,只要该节点能够与部署管理器进行通信。您也可在第 4 步后运行清单 21 中的脚本,强制将 SDK 更改手动传播到受影响的节点。
      清单 21
      wsadmin>AdminNodeManagement.syncNode(“myNode”)
      wsadmin>quit
    7. 将节点成功设置为使用 SDK 7 后,必须重新启动所有服务器才能在 SDK 7 中运行。

请注意,AdminTask.setNodeDefaultSDK() 命令的 -clearServerSDKs 参数可以清除服务器级 SDK 设置,使服务器能够使用节点级默认 SDK。

要为一个托管节点中的服务器配置 SDK 7,可以使用 AdminTask.setServerSDK() 命令或管理控制台:

  1. 使用 AdminTask.setServerSDK() 命令
    1. 启动一个托管节点的部署管理器服务器,如果尚未运行该服务器。
    2. 在部署管理器服务器配置文件的 bin 目录中,在连接模式下启动 wsadmin 工具(清单 22)。
      清单 22
      cd <profile_directory>/bin
      c:\<profile_directory>\bin> wsadmin.bat -conntype SOAP –port 
      	dmgr_soap_port -lang jython
    3. 运行清单 23(查找一个节点的可用 SDK 名称)和清单 24(查找一个节点的可用 SDK 安装位置)中的命令,查找可供使用的 SDK。
      清单 23
      wsadmin>print AdminTask.getAvailableSDKsOnNode('[-nodeName myNodeName]')
      1.6_32
      1.7_32
      清单 24
      wsadmin>AdminTask.getSDKPropertiesOnNode('[-nodeName myNodeName -sdkName 1.7_32 
      	-sdkAttributes [location ]]')
      '[com.ibm.websphere.sdk.location.1.7_32 ${WAS_INSTALL_ROOT}/java_1.7_32]'
    4. 在 wsadmin 提示符下,运行 AdminTask.setServerSDK() 命令(清单 25 或清单 26)。
      清单 25
      wsadmin>AdminTask.setServerSDK('[-nodeName myNode –serverName myServer 
      	–sdkName 1.7_32]')
      ’’
      清单 26
      wsadmin>AdminTask.setServerSDK('[-nodeName myNode –erverName 
      	myServer -javahome ${WAS_INSTALL_ROOT}/java_1.7_32]')
      ’u8217 	
      wsadmin>AdminConfig.save()
    5. 可选地,验证服务器 SDK 已设置为 1.7_32(清单 27 或清单 28)。
      清单 27
      wsadmin>AdminTask.getServerSDK('[-nodeName myNode –serverName myServer]')
      '[[javahome ${JAVA_LOCATION_1.7_32}] [sdkname 1.7_32]]'
      清单 28
      wsadmin>AdminTask.getServerSDK('[-nodeName myNode –serverName myServer]')
      '[[javahome ${WAS_INSTALL_ROOT}/java_1.7_32] [sdkname 1.7_32]]'
    6. 默认情况下,节点的 SDK 更改会定期传播到受影响的节点,只要该节点能够与部署管理器进行通信。您还可以在第 4 步后运行清单 29 中的脚本,强制将 SDK 更改手动传播到受影响的节点。
      清单 29
      wsadmin>AdminNodeManagement.syncNode(“myNode”)
      wsadmin>quit
    7. 将服务器成功设置为使用 SDK 7 后,重新启动服务器,以便在 SDK 7 中运行。
  2. 使用管理控制台

    SDK 7 应该已经安装在了您希望更新的节点上。必须重新启动 nodeAgent,然后才可以使用节点元数据。

    1. 要在托管节点上启用 SDK 7,可导航到节点集合面板 (System Administration > Nodes > NodeName),选择 Additional Properties 部分中的 Java SDKs 链接(参见图 4)。
      图 4. 描述?
      图 4. 描述?
    2. 如果 SDK 7 已经正确安装,并且已经重新启动节点代理,那么您应该在选择 Java SDKs 后看到图 5。
      图 5. 描述?
      图 5. 描述?

      选择 SDK 7 安装并单击 Make Default 按钮,将 SDK 7 设置为默认 SDK。更改默认值后,会显示一条表明成功或失败的消息(参见图 6)。

      图 6. 描述?
      图 6. 描述?
    3. 当控制台显示 Save 或 Review 链接时,选择 Save。如果未设置自动同步的控制台首选项,则必须手动同步节点。完成同步之后,必须重新启动节点代理,这样更改才能生效。

    控制台发出的用来修改或显示可用 SDK 列表的 AdminTask 命令如图 7 所示。

    图 7. 描述?
    图 7. 描述?

要为一个集群中的所有集群成员配置 SDK 7,可以使用 AdminTask.setServerSDK() 命令:

  1. 启动一个托管节点的部署管理器服务器,如果尚未运行该服务器。
  2. 在部署管理器服务器配置文件的 bin 目录中,在连接模式下启动 wsadmin 工具(清单 30)。
    清单 30
    cd <profile_directory>/bin
    c:\<profile_directory>\bin> wsadmin.bat -conntype SOAP –port 
    	dmgr_soap_port -lang jython

    查阅父节点的可用 SDK。要查找某个节点的可用 SDK 名称,可使用清单 31 中所示的命令。要查找某个节点的可用 SDK 安装位置,可使用清单 32 中所示的命令。

    清单 31
    wsadmin>print AdminTask.getAvailableSDKsOnNode('[-nodeName myNodeName]')
    1.6_32
    1.7_32
    清单 32
    wsadmin>AdminTask.getSDKPropertiesOnNode('[-nodeName myNodeName -sdkName 
    1.7_32 -sdkAttributes [location ]]')
    '[com.ibm.websphere.sdk.location.1.7_32 ${WAS_INSTALL_ROOT}/java_1.7_32]'
  3. 在 wsadmin 提示符下,运行 AdminTask.setServerSDK() 命令(清单 33 或清单 34)。
    清单 33
    wsadmin>AdminTask.setServerSDK('[-clusterName myCluster -sdkName 1.7_32]')
    ’’	
    wsadmin>AdminConfig.save()
    清单 34
    wsadmin>AdminTask.setServerSDK('[-clusterName myCluster -javahome 
    	${WAS_INSTALL_ROOT}/java_1.7_32]')
    ’’	
    wsadmin>AdminConfig.save()
  4. 可选地,验证集群成员 SDK 已经设置为 1.7_32(清单 35 或清单 36)。
    清单 35
    wsadmin>AdminTask.getServerSDK('[-nodeName myNode –serverName myClusterMember]')
    '[[javahome ${JAVA_LOCATION_1.7_32}] [sdkname 1.7_32]]'
    清单 36
    wsadmin>AdminTask.getServerSDK('[-nodeName myNode –serverName myClusterMember]')
    '[[javahome ${WAS_INSTALL_ROOT}/java_1.7_32] [sdkname 1.7_32]]'
  5. 默认情况下,节点的 SDK 更改会定期传播到受影响的节点,只要该节点能够与部署管理器进行通信。您还可以在第 4 步后运行清单 37 中的脚本,强制将 SDK 更改手动传播到受影响的节点。
    清单 37
    wsadmin>AdminNodeManagement.syncNode(“myNode”)
    wsadmin>quit

将集群成功设置为使用 SDK 7 后,必须重新启动所有集群成员服务器才能使用 SDK 7。

使新应用服务器、集群成员模板和新集群成员能够使用 SDK 7

  • 新应用服务器

    当创建一个应用服务器时,没有服务器级别的 SDK 设置;它默认集成它的节点 SDK 设置。如果它的节点 SDK 设置为 SDK 7,新应用服务器也使用 SDK 7;否则可使用 AdminTask.setNodeDefaultSDK()AdminTask.setServerSDK() 命令在节点级别或服务器级别上将新应用服务器设置为使用 SDK 7。

  • 集群成员模板

    可使用以下两种方法使集群成员模板可使用 SDK 7:

    1. 使用 AdminTask.setServerSDK() 命令和 –clusterName 参数不仅会为集群成员启用 SDK 7,还会使其集群成员模板能够使用 SDK 7,以便后续创建的所有集群成员都能够使用 SDK 7。
    2. 可创建一个在服务器级别上启用了 SDK 7 的应用服务器,然后创建第一个集群成员,方法是使用该应用服务器作为一个集群成员模板,或者将该应用服务器转换为第一个集群成员。创建第一个集群成员后,集群成员模板已在服务器级别上启用了 SDK 7。
  • 集群和新集群成员

    在一个集群内,所有集群成员使用的 SDK 必须具有相同的版本和相同的位数。

    在创建集群成员时,如果它的服务器模板没有服务器级别上的任何 SDK 设置,那么在默认情况下它会使用节点级的 SDK 设置。如果节点 SDK 设置无法满足您的要求,可以使用前面描述的方法之一使节点能够使用您想要的 SDK。

    在创建集群成员时,如果使用了一个具有服务器级别的 SDK 设置的服务器模板,那么该集群成员将使用服务器 SDK 设置,该设置优先于节点 SDK 设置。例如,如果服务器模板启用了 SDK 7 使用能力,那么使用该服务器模板创建的服务器模板也将启用 SDK 7 使用能力,无论 SDK 设置是否在节点级别上。

    要查看新创建的集群成员的 SDK 设置,可运行清单 38 中的 AdminTask 命令。

    清单 38
    wsadmin>AdminTask.getServerSDK('[-nodeName myNode –serverName myClusterMember]')
    '[[javahome ${WAS_INSTALL_ROOT}/java_1.7_32] [sdkname 1.7_32]]'
    wsadmin>

    如果集群成员在服务器 SDK 设置上使用 ${WAS_INSTALL_ROOT}/java_1.7_32 作为 JAVA_HOME 的值,那么用户需要确保已安装了一个 32 位的 SDK 7 并可供指定位置上的集群成员的父节点使用。对于 IBM System i 7.1,您需要确保 JAVA_HOME 的 SDK 位置设置已经安装了相应的 SDK。

    如果集群成员在服务器 SDK 设置上使用 ${JAVA_LOCATION_1.7_32} 作为 JAVA_HOME 的值,那么您应确保集该集群成员的父节点已启用了 SDK 7 使用能力,这会设置值 ${JAVA_LOCATION_1.7_32}。

使所有服务器和命令能够使用 SDK 7

要在创建任何配置文件之前使新 WebSphere Application Server V8.5 安装能够对所有服务器和命令使用 SDK 7,只需遵照之前的说明:

  1. 使命令能够使用 SDK 7 作为命令默认 SDK
  2. 使新配置文件能够使用 SDK 7

如果您在更改一个拥有现有配置文件的 V8.5 安装的 SDK 配置,那么除了执行上面列出的两个任务,还需要使所有现有的配置文件能够使用 SDK 7。

开始之前:

  1. 停止所有应用服务器。
  2. 启动所有节点代理。
  3. 列出可用的 SDK,以确定可用的 SDK 7 安装的名称。
  4. 确保所有联合节点的部署管理器正在运行。联合节点的 SDK 配置更改是通过更改部署管理器的主配置存储库来完成的,而不是直接通过更改联合配置文件的配置来完成的。

要使所有现有的配置文件能够使用 SDK 7,可以调用 managesdk –enableProfileAll 命令和 –sdkName 选项。例如,如果一个 SDK 7 安装的 sdkName 为 1.7_32,那么调用清单 39 中所示的 managesdk。

清单 39
>cd <WAS_INSTALL_ROOT>\bin
> managesdk.bat -enableProfileAll
             -sdkName 1.7_32
             -enableServers
   CWSDK1017I: Profile default now enabled to use SDK 1.7_32.
   CWSDK1017I: Profile server1 now enabled to use SDK 1.7_32.
   CWSDK1017I: Profile appServer2 now enabled to use SDK 1.7_32.
   CWSDK1001I: Successfully performed the requested managesdk task.

此外,如果启用了管理安全,那么您可以在命令上使用 –user–password 选项来提供用户名和密码。但是,如果无法验证所有具有相同用户名和密码的单元,则必须将脚本安全配置为像是使用 -enableProfileAll 一样。请参阅 WebSphere Application Server V8.5 信息中心,了解 如何配置脚本安全 的信息。

在一个联合节点中的应用服务器可使用这个新 SDK 设置之前,必须执行一次同步操作。

为了避免麻烦,不要使用 -enableProfileAll 选项,除非对拥有任何联合节点的单元部署管理器或启用了安全的部署管理器的 SOAP、IPC 和 RMI 连接禁用了自动提示。自动提示会导致 managesdk 命令失败或停止处理。

使应用客户端能够使用 SDK 7

要使分布式平台上的应用客户端安装可使用 SDK 7,可通过 使命令能够使用 SDK 7 作为命令默认 SDK 来实现。

在 System i 上,应用客户端安装可包含配置文件。因此,除了使命令能够使用 SDK 7 作为命令默认 SDK 之外,您还必须使新配置文件能够使用 SDK 7。另外,如果配置文件存在,那么可以使用 managesdk -enableProfileAll 命令使所有现有配置文件能够使用 SDK 7。例如,如果 SDK 7 安装的 SDK 名称为 1.7_32,并且应用客户端仅包含一个名为 client1 的配置文件,那么可调用 managesdk,如清单 40 所示。

清单 40
> managesdk -enableProfileAll -sdkName 1.7_32
  CWSDK1017I: Profile client1 now enabled to use SDK 1.7_32.
  CWSDK1001I: Successfully performed the requested managesdk task.
  $

命令和接口

managesdk 命令

WebSphere Application Server V8.5 以一个名为 managesdk 的脚本形式提供了一个命令行接口,该接口使管理员能够管理已安装的各种 SDK 配置设置。它的功能以配置文件为中心,可从产品安装的 bin 目录或任何配置文件的 bin 目录中进行调用。

managesdk 脚本调用 setter 和 getter 任务来更改或检索与安装本身、某个指定配置文件或某个安装中的所有配置文件相关的 SDK 配置设置。您可以调用 managesdk 任务来列出配置文件(或所有配置文件)的当前 SDK 设置的列表,使一个安装中的单个配置文件(或所有配置文件)能够使用一个可用的 SDK,或者列出所有可用的 SDK。此外,您可以调用 managesdk 任务来获取和设置不依赖于配置文件的命令所使用的 SDK。

managesdk 命令支持的一些任务已在 “简介” 中提及,但 managesdk 命令还有 3 个可选的参数值得注意:

  • -debug:可添加到任何 managesdk 任务请求中。它提供了与执行的 managesdk 任务相关的跟踪输出信息。
  • -verbose:可添加到任何 getter 任务 (-getXXX, -listXXX)。对于该任务检索的每个 SDK 配置设置,也将显示相应的 SDK 元数据。
  • -enableServers:可添加到 -enableProfile-enableProfileAll 任务中。当启用一个配置文件时,该配置文件的节点的 SDK 设置会更改为指定的 SDK 名称。-enableServers 参数是一个开端,当出现时可用于清除该配置文件的必须通过另一个接口显式设置的所有应用服务器的 SDK 设置。这可确保这些应用服务器现在将继承其父节点的 SDK 设置。没有它,所有应用服务器 SDK 设置将保持不变。

该文档包含使用 managesdk 命令的完整细节,包括联合的配置文件和安全考虑因素。

ManagedObjectMetadata 命令和 API

在安装 SDK 后,当在某个节点上执行以下触发操作时,WebSphere Application Server V8.5 就会开始缓存节点元数据属性中有关新安装的 SDK 的信息:

收集的有关已安装 SDK 的信息包括它的版本、安装位置、位数、安装平台、安装架构和 SDK 安装的本机 libpath。

如果不执行这些触发操作,那么有关新安装的 SDK 的信息就不会添加到节点元数据属性中。因此,ManagedObjectMetadata getter 方法、ManagedObjectMetatata getter API 和管理控制台 “Java SDK” 面板不会显示一个节点或服务器的新安装的 SDK 的任何信息。

收集了一个节点的节点元数据属性中的 SDK 信息后,您可以通过 wsadmin AdminTask 令或 WebSphere Application Server API 查询托管对象元数据,获取 SDK 信息。也可以通过每个节点或服务器的 Java SDK 管理控制台面板来查看可用的 SDK。

两个 wsadmin AdminTask 命令和一组 WebSphere Application Server API 可用于获取给定节点上的可用 SDK 信息。这两个命令是:

请参阅 WebSphere Application Server V8.5 信息中心,了解有关这些命令的更多细节。

ManagedObjectHelper API:

  • public java.lang.String[] getAvailableSDKsOnNode( java.lang.String nodeName) 抛出 AdminException
  • public java.util.Properties getSDKPropertiesOnNode( java.lang.String nodeName, java.lang.String sdkName, java.lang.String[] sdkAttributes) 抛出 AdminException
  • public java.lang.String getSDKLocation( java.lang.String nodeName, java.lang.String sdkName) 抛出 AdminException
  • public java.lang.String getSDKVersion( java.lang.String nodeName, java.lang.String sdkName) 抛出 AdminException
  • public java.lang.String getSDKBits( java.lang.String nodeName,java.lang.String sdkName) 抛出 AdminException

这些 API 属于 ManagedObjectMetadataHelper 类,该类包含在 WebSphere Application Server API 中的 com.ibm.websphere.mangement.metadata 包中。请参阅 WebSphere Application Server V8.5 信息中心,了解有关这些 API 的更多细节。

AdminSDKCmds 分组

WebSphere Application Server V8.5 中的 AdminSDKCmds 分组提供多个 AdminTask 命令,可以使用它们管理(获取、设置或清除)一个节点、服务器或集群运行时的 SDK 配置。这些 AdminTask commands 命令是:

  • getNodeDefaultSDK:返回一个节点的默认 SDK 的值,其中包含 Java 主路径和 SDK 名称。
  • getSDKVersion:返回用于一个节点、服务器或集群的 SDK 的版本号。
  • getServerSDK:返回一个服务器的 SDK 的值。如果为服务器设置了有效的 SDK 值,返回的值包含服务器的默认 SDK 的 Java 主路径和 SDK 名称。
  • getUnusedSDKsOnNode:返回一个节点未使用的 SDK 名称列表。
  • setNodeDefaultSDK:使用指定的 SDK Java 主路径或 SDK 名称(但不能同时选择二者)为一个给定节点分配一个默认 SDK。
  • setServerSDK:使用指定的 SDK Java 主路径或 SDK 名称(但不能同时选择二者)为一个给定服务器或集群分配一个 SDK。该命令也可用于不指定 SDK Java 主路径或 SDK 名称的值,从而清除服务器 SDK 设置。

请参阅 WebSphere Application Server V8.5 信息中心,了解有关这些 AdminTask 命令的更多细节。


技巧

  • 使配置文件脚本和工具能够使用为配置文件的服务器运行时启用的相同 SDK

    默认情况下,当创建一个应用服务器时,它不包含任何 SDK 配置设置,所以会从其父节点继承这些设置。但是,AdminTask setServerSDK() 可用于显式设置服务器的 SDK 配置设置。当出现这种情况时,配置文件的客户端脚本和工具可以运行与服务器的运行时环境不同的 SDK。这可能导致不一致性和运行时异常。配置文件的客户端脚本和工具以及节点和应用服务器都应该使用相同的 SDK 设置。

    如果配置文件的服务器 SDK 设置不同于配置文件的客户端脚本和工具 SDK 设置,那么可以使用 managesdk 命令任务 -enableProfile 和参数 -enableServers 使它们相同。此参数可以清除配置文件的应用服务器的所有 SDK 配置设置,使它们再次继承父节点的 SDK 配置设置。清单 41 显示了一个示例。

    清单 41
    >cd <WAS_INSTALL_ROOT>\bin  
    > managesdk.bat -listEnabledProfileAll
    CWSDK1004I: Profile default : 
    CWSDK1006I: PROFILE_COMMAND_SDK = 1.6_32
    CWSDK1008I: Node MYSERVER_default SDK name: 1.6_32
    CWSDK1009I: Server server1 SDK name: 1.7_32
    CWSDK1001I: Successfully performed the requested managesdk task.
    > managesdk.bat -enableProfile
                    -profileName default
                    -sdkName 1.6_32
                    -enableServers
    CWSDK1017I: Profile default now enabled to use SDK 1.6_32.
    CWSDK1001I: Successfully performed the requested managesdk task.
    > managesdk.bat -listEnabledProfile -profileName default
    CWSDK1004I: Profile default : 
    CWSDK1006I: PROFILE_COMMAND_SDK = 1.6_32
    CWSDK1008I: Node MYSERVER_default SDK name: 1.6_32
    CWSDK1009I: Server server1 SDK name: 1.6_32
    CWSDK1001I: Successfully performed the requested managesdk task.
  • 不要建立与 SDK 名称格式的任何依赖关系

    前面已经提到,即使当前支持的所有 SDK 名称都遵循模式 <version>_<bitness>,受支持的 SDK 名称仍然没有一种正式的约定。如果将新 SDK 添加到现有的 WebSphere Application Server 版本中,或者将它添加到一个未来的版本中,那么 SDK 名称不一定遵循当前使用的 <version>_<bitness> 模式。任何客户脚本或应用程序都不应该就未来可能支持的 SDK 名称做出任何假设。

  • 在卸载可选 SDK 之前禁用它们

    SDK 6(在 WebSphere Application Server V8.5 的初始安装中使用)不得卸载。其任何他可选地安装的 SDK 均可删除,但在卸载之前,必须确保没有命令或服务器能够使用它。

    在清单 42 中的示例中,将卸载名为 1.7_32 的 SDK 7。

    清单 42
    >cd <WAS_INSTALL_ROOT>\bin
    > managesdk.bat -listAvailable
      CWSDK1003I: Available SDKs : 
      CWSDK1005I: SDK name: 1.6_32
      CWSDK1005I: SDK name: 1.7_32
      CWSDK1001I: Successfully performed the requested managesdk task.
    > managesdk.bat -getNewProfileDefault
      CWSDK1007I: New profile creation SDK name: 1.7_32
      CWSDK1001I: Successfully performed the requested managesdk task. 
    > managesdk.bat -setNewProfileDefault -sdkName 1.6_32
      CWSDK1022I: New profile creation will now use SDK name 1.6_32.
      CWSDK1001I: Successfully performed the requested managesdk task. 
    > managesdk.bat -getCommandDefault
       CWSDK1006I: COMMAND_DEFAULT_SDK = 1.7_32
       CWSDK1001I: Successfully performed the requested managesdk task.
     > managesdk -setCommandDefault -sdkName 1.6_32
       CWSDK1021I: The command default SDK name is now set to 1.6_32. 
       CWSDK1001I: Successfully performed the requested managesdk task.

    获取安装中的所有配置文件的列表,以确定每个配置文件使用的 SDK 配置(清单 43)。

    清单 43
    > managesdk.bat -listEnabledProfileAll
      CWSDK1004I: Profile default : 
       CWSDK1006I: PROFILE_COMMAND_SDK = 1.7_32
       CWSDK1008I: Node MYSERVER_default SDK name: 1.7_32 
       CWSDK1009I: Server server1 SDK name: 1.7_32
       CWSDK1001I: Successfully performed the requested managesdk task.

    在结果列表中,对于每个使用将卸载的 SDK 的配置文件,可以使用 使托管节点/服务器/集群能够使用 SDK 7使独立应用服务器配置文件和管理配置文件能够使用 SDK 7 小节中介绍的步骤,使用名为 1.6_32 的 SDK 代替 1.7_32。

  • 重新启动服务器,使新安装的 SDK 可供某个节点使用

    安装或卸载一个 SDK 后,重新启动下面所有类型的服务器,以触发对可供使用的 SDK 的节点元数据属性的更新:

    • 节点代理服务器
    • 独立应用服务器
    • 管理服务器(部署管理器服务器、管理代理服务器或作业管理器服务器)将导致在其节点元数据属性中添加/删除新安装/卸载的 SDK 的信息
  • SDK 设置范围

    服务器级别上的 SDK 设置优先于节点级别上的 SDK 设置。

  • 应用程序部署考虑因素
    • 确保应用程序编译时使用的 SDK 版本不高于运行其应用服务器时使用的 SDK 版本。
    • 避免使用不推荐使用的 API。
  • 使一个部署管理器能够使用 SDK 的正确版本和修复级别

    可使部署管理器能够运行任何 SDK 版本,但是,如果需要在部署应用程序时执行代码生成,那么部署管理器和目标节点必须运行 SDK 的相同版本和修复级别以及 WebSphere Application Server 的相同版本和修复级别。


结束语

借助可插拔 SDK,可以将命令和服务器运行时配置为使用 SDK 7。您可以选择使得某个服务器、节点、集群、配置文件(包含配置文件中的所有服务器和命令)或整个 WebSphere Application Server V8.5 安装能够使用 SDK 7。此外,您还可以使用可插拔 SDK 启用 IBM System i 上的 32 位或 64 位版 SDK 7,或者启用 z/OS 上的 32 位或 64 位版 SDK 7。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=855697
ArticleTitle=WebSphere Application Server V8.5 中的系统管理,第 4 部分: 使用可插拔 SDK 7 启用 WebSphere Application Server for Java 7
publish-date=01212013