Sun GlassFish Enterprise Server 2.1 发行说明

管理

本节介绍已知的管理问题和相应的解决方法。

独立实例有时会从其他实例获取文件 (6698604)

说明

在某些情况下,安装在 DAS 上的预期要与特定实例同步的文件实际上会发送到其他实例。

解决方法

没有已知的解决方法。

来自 start-cluster 命令的启动消息太详细 (6728317)

说明

即使在启动过程中非关键组件失败,asadmin start-cluster 命令也会显示过多消息。请参见非关键元素(与群集中的实例相关)失败时的以下示例命令输出:


./asadmin start-cluster --port 9898 cluster1
Please enter the admin user name>admin
Please enter the admin password>
The clustered instance, instance2, was successfully started.
error 0 [#|2008-07-17T14:58:16.496+0200|WARNING|sun-appserver9.1|javax.jms|
_ThreadID=10;_ThreadName=main;
_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|[C4003]: 
Error occurred on connection creation [localhost:37676]. - cause: 
java.net.ConnectException: Connection refused|#]


error 1 [#|2008-07-17T14:58:17.517+0200|WARNING|sun-appserver9.1|javax.jms|
_ThreadID=10;_ThreadName=main;
_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|[C4003]: 
Error occurred on connection creation [localhost:37676]. - cause: 
java.net.ConnectException: Connection refused|#]


error 2 [#|2008-07-17T14:58:30.596+0200|WARNING|sun-appserver9.1|
javax.enterprise.system.container.ejb|
_ThreadID=13;_ThreadName=pool-1-thread-4;TimerBean;
_RequestID=5954a044-df06-4a3e-902a-0c40b4b6cddb;
|EJB5108:Unable to initialize EJB Timer Service. 
The likely cause is the database has not been 
started or the timer database table has not been created.|#]


error 3 [#|2008-07-17T14:58:32.512+0200|WARNING|sun-appserver9.1|
javax.enterprise.resource.resourceadapter|_ThreadID=10;_ThreadName=main;
__CallFlowPool;_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|
RAR5005:Error in accessing XA resource with JNDI name [__CallFlowPool] for recovery|#]


The clustered instance, instance1, was successfully started.
error 0 [#|2008-07-17T14:58:21.117+0200|WARNING|sun-appserver9.1|
javax.enterprise.system.container.ejb|
_ThreadID=13;_ThreadName=pool-1-thread-4;TimerBean;
_RequestID=30827d9a-72ac-4854-b216-06494b6a9fb5;
|EJB5108:Unable to initialize EJB Timer Service. The likely cause is the database has 
not been started or the timer database table has not been created.|#]


error 1 [#|2008-07-17T14:58:23.106+0200|WARNING|sun-appserver9.1|
javax.enterprise.resource.resourceadapter|
_ThreadID=10;_ThreadName=main;__CallFlowPool;
_RequestID=b41d76fa-0203-49f7-a2ae-83bf242d3e7a;
|RAR5005:Error in accessing XA resource with JNDI name [__CallFlowPool] for recovery|#]


Command start-cluster executed successfully.

解决方法

没有已知的解决方法。可忽略这些(异常)消息。

无法对 IBM MQ 部署通用 RA 资源适配器(问题 6605)

说明

对 IBM Message Queue 产品部署通用 RA 适配器失败。server.policy 文件中授予的权限如下所示。


grant {
      permission java.util.logging.LoggingPermission "control";
      permission java.util.PropertyPermission "*", "read,write";
      }

解决方法

server.policy 文件中的权限更改为如下所示:


grant codeBase
"file:${com.sun.aas.installRoot}/lib/install/applications/adminapp/-" {
  permission java.util.logging.LoggingPermission "control";
 };

如果 domain1 不存在,package-appclient 脚本无法运行 (6171458)

说明

默认情况下,在 as-install/lib/package-appclient.xml 中有一个用于 domain1(由 asenv.conf 来指向)的 AS_ACC_CONFIG 变量的硬编码值。如果删除 domain1 并创建新域,将不会用新域名更新 AS_ACC_CONFIG 变量,从而导致 package-appclient 脚本失败。

解决方法

执行以下操作之一:

  1. 保持 domain1 不变,围绕它创建其他域。

  2. 删除 domain1 并用新域名替换 as-install/lib/package-appclient.xml 中用于 domain1 的硬编码值。

如果 domain1 不存在,则每次创建新域时,都必须执行此操作。

不支持使用其他 JMX 代理启动服务器 (6200011)

说明

J2SE 1.4.x、5.0 或更高版本可以在服务器上进行配置。J2SE 5.0 平台的完整功能是可以启动 JMX 代理。在服务器启动时,如果您明确设置了系统属性,此功能将被激活。

示例值包括:


name="com.sun.management.jmxremote" value="true"
name="com.sun.management.jmxremote.port" value="9999"
name="com.sun.management.jmxremote.authenticate" value="false"
name="com.sun.management.jmxremote.ssl" value="false"

在配置了 JMX 属性并启动服务器之后,将在虚拟机中启动新的 jmx-connector 服务器。此过程的副作用是会对管理功能造成不利影响,并且管理控制台和命令行界面可能会产生异常结果。出现此问题的原因在于内置 jmx-connector 服务器与新的 jmx-connector 服务器之间存在一些冲突。

解决方法

如果使用 jconsole(或任何其他 JMX 兼容客户机),请考虑重新使用标准的 JMX Connector Server,它在服务器启动时启动。

当服务器启动时,server.log 中会出现类似于如下所示的一行。您可以连接到其中指定的 JMXService URL,并在成功提供证书后执行相同的管理/配置操作,例如:


[#|2004-11-24T17:49:08.203-0800|INFO|sun-appserver-ee8.1|
javax.enterprise.system.tools.admin|_ThreadID=10;|ADM1501: 
Here is the JMXServiceURL for the JMXConnectorServer: 
[service:jmx:rmi:///jndi/rmi://hostname:8686/management/
rmi-jmx-connector]. This is where the remote administrative 
clients should connect using the JSR 160 JMX Connectors.|#]

有关更多信息,请参阅《Sun GlassFish Enterprise Server 2.1 Administration Guide》

无法使用任一 Web 服务的端点 URL 创建负载平衡器配置文件(6236544、6275436)

说明

如果某个应用程序具有可导出 Web 服务 URL 的 EJB 模块,则在用该应用程序设置负载平衡器配置时,Web 服务环境中的超级用户不会包含在结果文件 loadbalancer.xml 中。

解决方法

  1. 编辑 loadbalancer.xml 文件,按如下所示添加缺少的 Web 模块:


    <web-module context-root="context-root-name"
    disable-timeout-in-minutes="30" enabled="true"/>
  2. 用作为 EJB 提供的 Web 服务环境中的超级用户名称替换 context-root-name 的值。

Enterprise Server 文档中未介绍 .asadmintruststore 文件 (6315957)

说明

Enterprise Server 文档中未介绍 .asadmintruststore 文件。如果服务器管理员的目录中不包含此文件,在升级该服务器上的某些应用程序时可能会出现严重错误。

解决方法

由于在访问 JMS 代理时超时,无法启动群集实例 (6523663)

说明

Enterprise Server 群集实例的默认 MQ 集成模式为 LOCAL。如果将 Enterprise Server 安装在长(即 "not short")位置 (PATH) 上,当群集实例启动时,imqbrokerscv.exe 会崩溃。此问题是 imqbrokersvc 中的内存分配问题。

解决方法

必须将群集实例的 JMS 服务类型从默认的 LOCAL 更改为 REMOTE。在此配置中,所有实例都指回 DAS 代理。请遵照下面的说明,以 REMOTE 模式配置群集。


注 –

使用 REMOTE 模式时,所有实例都使用一个代理 (DAS),因此当 Enterprise Server 群集启动时,不会创建任何代理群集。有关更多信息,请参见 http://www.glassfishwiki.org/gfwiki/attach/OnePagersOrFunctionalSpecs/as-mq-integration-gfv2.txt 一页上 4.1 节第 iii 部分中的“自动群集”。上述功能将不可用!


Procedure使用命令行

开始之前

根据您的环境修改端口和密码文件。请注意,在以下说明中,群集名称为 racluster,DAS 管理端口为 5858,DAS JMS 端口为 7676

  1. 修改群集配置,将 JMS 类型更改为 REMOTE


    as-install/bin/asadmin.bat set --port 5858 --user admin --passwordfile \
    as-install/bin/password_file racluster.jms-service.type=REMOTE
  2. 创建对应于 DAS JMS 主机的 JMS 主机。


    as-install/bin/asadmin.bat create-jms-host --port 5858 --user admin --passwordfile \
    as-install/bin/password_file --target racluster --mqhost localhost --mqport 7676 \
    --mquser admin --mqpassword admin dashost
  3. 将默认的 JMS 主机设置为在上一步骤中创建的 DAS JMS 主机。


    as-install/bin/asadmin.bat set --port 5858 --user admin --passwordfile \
    as-install/bin/password_file racluster.jms-service.default-jms-host=dashost

Procedure使用管理 GUI

  1. 转至“配置”-> "cluster-name-config" ->“Java 消息服务”->“JMS 主机”。

  2. 单击“新建”以创建新的 JMS 主机,将其命名为 dashost

  3. 输入对应于 DAS JMS 服务的配置设置,默认设置如下所示:

    • 主机名:localhost

    • 端口: 7676

    • 管理员用户: admin

    • 密码: admin

    根据您的 DAS JMS 服务修改这些设置。

  4. 导航回“Java 消息服务”选项卡,并将 JMS 服务类型更改为 REMOTE(默认为 LOCAL)。

  5. 从 "default-jms-host" 下拉式列表中,选择 "dashost"。

  6. 保存更改,然后启动节点代理或群集。

无法在 Netscape 8.1.3、Mozilla 1.7 和 Safari 2.0.4 浏览器中显示 jmaki 图表 (6543014)

说明

当尝试使用某些不支持的浏览器显示“日志统计信息监视”页中的图表时,可能会抛出以下错误:


Error loading jmaki.widgets.jmaki.charting.line.Widget : id=form1:jmaki_chart11
Script: http://easqelx5.red.iplanet.com:4848/resources/jmaki/charting/ \
line/component.js (line:5437).
Message: area.initialize is not a function

解决方法

使用支持的浏览器。有关 Enterprise Server 2.1 支持的浏览器的列表,请参阅浏览器

默认端口在每个 AS 主要发行版中都有所不同 (6566481)

说明

默认管理端口已在过去三个主要 Enterprise Server 发行版中都有所不同。具体而言,7.x、8.x 和 9.x 中的默认管理端口如下所示:

解决方法

这不是错误,但是一个需要注意的事项。默认管理端口只是一个建议端口。希望在以后的 Enterprise Server 版本中将保留默认 4848 端口。

在 AIX 中使用自定义主密码时 create-domain 命令失败 (6628170)

说明

在 AIX 操作系统上,尝试使用自定义主密码创建域失败,同时显示以下错误:


keytool error (likely untranslated): java.lang.NullPointerException
 Enter keystore password:  New keystore password:

Procedure解决方法:(AIX) 使用自定义主密码创建域


注 –

在接下来的过程中,仅提供每个步骤所要求的选项。如果您需要命令的其他选项,请在命令中指定这些选项。有关 Enterprise Server 命令的信息,请参见《Sun GlassFish Enterprise Server 2.1 Reference Manual》


  1. 创建包含以下代码行的 shell 脚本:

    #!/bin/sh
    changeKeystorePass() {
      keytool -storepasswd -keystore ${KEYSTORE} -storepass ${OLD} -new ${NEW}
    }
    changeTruststorePass() {
      keytool -storepasswd -keystore ${TRUSTSTORE} -storepass ${OLD} -new ${NEW}
    }
    changeKeyPass() {
      keytool -keypasswd -alias s1as -keystore ${KEYSTORE} -storepass ${NEW} -keypass ${OLD} -new ${NEW}
    }
    changeDomainPasswordEntry() {
      keytool -storepasswd -storetype JCEKS -keystore ${DOMAINPASSWORDS} -storepass ${OLD} -new ${NEW}
    }
    deleteMasterPasswordFile() {
      if [ -f ${DOMAIN_PATH}/master-password ] ; then
        echo Deleting ${DOMAIN_PATH}/master-password
        rm -f ${DOMAIN_PATH}/master-password
      fi
    }
    DOMAIN_PATH=$1
    OLD=$2
    NEW=$3
    if [ $# != 3 ] ; then
      echo Usage: $0 domain-path old-master-pass new-master-pass
      exit 1
    fi
    echo Processing ...
    if [ ! -f ${DOMAIN_PATH}/config/domain.xml ] ; then
      echo "Domain with folder ${DOMAIN_PATH} does not exist, create it first"
      exit 2
    else
      KEYSTORE=${DOMAIN_PATH}/config/keystore.jks
      TRUSTSTORE=${DOMAIN_PATH}/config/cacerts.jks
      DOMAINPASSWORDS=${DOMAIN_PATH}/config/domain-passwords
      changeKeystorePass
      changeTruststorePass
      changeKeyPass
      changeDomainPasswordEntry
      deleteMasterPasswordFile
    fi
  2. 创建域,同时指定默认主密码。


    aadmin create-domain {--adminport aminportno|--portbase portbase} domain-name
    Please enter the admin user name>admin-user
    Please enter the admin password>admin-user-password
    Please enter the admin password again>admin-user-password
    Please enter the master password [Enter to accept the default]:>
    Please enter the master password again [Enter to accept the default]:>

    默认主密码为 changeit

  3. 更改您刚创建的域的主密码。

    要更改主密码,请运行在步骤 1 中创建的脚本。


    script-name domain-path old-password new-password
    
  4. 启动在步骤 2 中创建的域。


    asadmin start-domain domain-name
    

    由于域具有自定义主密码,因此系统将提示您输入主密码。

  5. 键入新的主密码作为对提示的响应。

  6. 对于配置为支持群集的域,创建并启动节点代理。

    1. 为在步骤 2 中创建的域创建节点代理。


      asadmin create-node-agent --port portno --user admin-user
      
    2. 启动在步骤 a 中创建的节点代理。


      asadmin start-node-agent
      

      由于域具有自定义主密码,因此系统将提示您输入主密码。

    3. 键入新的主密码作为对提示的响应。

另请参见

以下 Enterprise Server 手册页:

AIX:0403-027 参数列表过长 (6625591)

说明

在 AIX 操作系统上,某些与 OS 相关的操作可能失败并显示以下错误:


0403-027 The parameter list is too long

与 OS 相关的操作示例包括部署应用程序和运行应用程序客户机容器。

此问题通常是由 CLASSPATH 环境变量中的长文件路径引起的。

解决方法

使用以下解决方法之一:

Procedure(AIX) 增加命令行的最大长度

ncargs 属性决定命令行(包括环境变量)的最大长度。在 AIX 操作系统上,ncargs 属性的默认值为 4 个 4 千字节块。要确保 Enterprise Server 命令不超过命令行的最大长度,请将该值增加到 16 个 4 千字节块。


注 –

更改 ncargs 属性的值后,无需重新引导或刷新守护进程。


  1. 确定 ncargs 属性的值。


    lsattr -EH -l sys0 | grep ncargs
    
  2. 如果 ncargs 属性的值小于 16 个 4 千字节块,请将该值增加到 16。


    chdev -l sys0 -a ncargs=16