本节介绍有关 Sun Java System Application Server Platform Edition 9.0 Update 1 产品的已知问题和相应的解决方法。如果汇总说明未指明特定平台,则所有平台都可能出现此问题。本部分信息按以下内容进行组织:
默认情况下,在 $INSTALL/lib/package-appclient.xml 中有一个用于 domain1(由 asenv.conf 来指向)的 AS_ACC_CONFIG 变量的硬编码值。如果删除 domain1 并创建新域,将不会用新域名更新 AS_ACC_CONFIG 变量,从而导致 package-appclient 脚本失败。
执行以下操作之一:
保持 domain1 不变,围绕它创建其他域。
删除 domain1 并用新域名替换 $INSTALL/lib/package-appclient.xml 中用于 domain1 的硬编码值。如果 domain1 不存在,则每次创建新域时,都必须执行此操作。
可以在 Application Server 上配置 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 属性并启动服务器之后,将在 Application Server VM 中启动新的 jmx-connector 服务器。此过程的副作用是会对管理功能造成不利影响,并且 Application Server 管理 GUI 和 CLI 可能会产生异常结果。出现此问题的原因在于内置 jmx-connector 服务器与新的 jmx-connector 服务器之间存在一些冲突。
如果使用 jconsole(或任何其他 JMX 兼容客户机),请考虑重新使用标准的 JMX Connector Server,它在 Application Server 启动时启动。
当服务器启动时,server.log 中将显示类似于以下所示的内容。您可以连接到其中指定的 JMXServiceURL,并在成功提供证书后执行相同的管理/配置操作,例如:
[#|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 Java System Application Server 9.0 Update 1 Administration Guide》。
如果将 Application Server 安装在路径中包含空格的某个位置,则在停止该实例时,您将会在日志中看到类似以下的消息。请注意,这种状况不会影响 Application Server 的功能。
InvalidJvmOptionException: Invalid Jvm Option Files/Java/jdk1.5.0_07/jre/lib/ext; C:/Sun/AppServer/domains/domain1/lib/ext;C:/Sun/AppServer/javadb/lib. Option must start with -. |
管理控制台 GUI 能够将实际的零 (0) 与统计信息不可用的状态 (N/A) 区分开。命令行界面当前显示负 1 (-1) 而不是 N/A。例如,以下 display-error-statics 命令输出显示 -1 而不是 N/A。
# asadmin display-error-statistics Please enter the admin user name>admin Please enter the admin password> Timestamp Severity Warning --------------------------------------------------------- 1143659837750(Mar 29, 2006 11:17:17 AM) 0 0 1143656237750(Mar 29, 2006 10:17:17 AM) 0 0 1143652637750(Mar 29, 2006 9:17:17 AM) -1 -1 1143649037750(Mar 29, 2006 8:17:17 AM) -1 -1 1143645437750(Mar 29, 2006 7:17:17 AM) -1 -1 --------------------------------------------------------- Command display-error-statistics executed successfully. |
使用管理控制台 GUI 可以显示错误统计信息。在以后的版本中将修复此问题。
本节介绍已知的应用程序客户机问题和相应的解决方法。
本节介绍已知的安装/卸载问题和相应的解决方案。
已在多种 Linux 系统上发现此问题。在 Java Desktop System 2 上最为常见,但目前在 RedHat 版本中也发现了此问题。
在安装程序的最后一个屏幕上单击“完成”按钮后,安装程序无法启动包含产品“关于”页面或产品注册页面的浏览器窗口,并且安装程序将无限期地挂起而不返回命令提示符。
通过在启动安装程序的终端窗口中按 Ctrl+C 组合键来退出安装程序。执行此操作后,有时会启动包含产品“关于”页面或注册页面的浏览器窗口。如果不显示此窗口,请启动浏览器并输入以下 URL 以查看“关于”页面:
file://install_dir/docs/about.html
如果您还选择了用于注册产品的安装选项,请点击产品“关于”页面上提供的指向注册页面的链接。
启动 Linux 安装程序的 setup 可执行文件有时会挂起。包装程序不是解析 J2SE 位置并启动安装向导,而是挂起并返回以下消息:
Chcking available disk space.... Checking Java(TM) 2 Runtime Environment.... Extracting Java(TM) 2 Runtime Environment.... Deleting temporary files.....
仅在某些版本的 Linux 中发现了此问题。此问题好像与环境设置有关(特别是存在 JAVA_HOME 变量时)。
要解决此问题,请执行以下步骤:
通过运行 unset 或 unsetenv(这取决于您的 shell)来取消 JAVA_HOME 变量的设置。
运行带有 -javahome 选项的 setup 来指定安装程序使用的 JAVA_HOME。
本节介绍已知的生命周期管理问题和相应的解决方法。
[echo] Doing admin task set [exec] [Attribute(id=redelivery-interval-internal-in-millis) : Redelivery- Interval (7,000) should be greater than or equal to Minimum-delivery- interval-in-millis (9,000)] [exec] CLI137 Command set failed.
minimum-delivery-interval 是传送相同周期计时器之间的最小时间间隔。
redelivery-interval-in-mills 是计时器服务在 ejbTimeout 失败后再次尝试传送之前等待的时间。
问题在于描述重新传送时间间隔属性与最小传送时间间隔属性之间关系的逻辑不正确,使您无法使用 GUI 或 CLI 来设置使最小传送时间间隔大于重新传送时间间隔的任何值。
必须始终将 minimum-delivery-interval-in-millis 设置为等于或大于 ejb-timer-service 属性 redelivery-interval-in-millis。Application Server 在确认 redelivery-interval-in-millis 的值是否大于 minimum-delivery-interval-in-millis 的值时使用了错误的验证检查,这是产生上述问题的原因。
使用这些属性的默认值,如下所示:
minimum-delivery-interval(default)=7000 redelivery-interval-in-millis(default)=5000
使用其他的值将导致产生错误。
本节列出了与 Java Persistence API 相关的已知问题和相应的解决方案。
查询编译器不会检查 Java Persistence 语言的规范一章中定义的所有规则。特别是,它不检查以下各项:
函数参数的类型兼容性。
运算符、逻辑运算符和比较运算符的操作数的类型兼容性。
SELECT 子句对 ORDER BY 查询的要求。
无效的查询可能会进行编译,但可能会导致在运行时出现 SQLException。或者也可能出现以下情况:基础数据库比较宽松且支持 SQL,但在其他数据库上执行相同查询时会失败,并出现 SQLException。
手动验证上述条件。
有关更多信息,请参见 https://glassfish.dev.java.net/issues/show_bug.cgi?id=550。
手动验证查询中的哪些内容是错误的。
使用不同的类名称。
有关更多信息,请参见 https://glassfish.dev.java.net/issues/show_bug.cgi?id=558。
请勿明确地列出 MappedSuperclass。
通过使用 Java 包装对象类型,映射到可为 null 的数据库列。
本节介绍与升级和使用升级工具相关的已知问题和相应的解决方案。
如果运行升级实用程序并将 install_dir 标识为源安装目录,升级进程只升级在 install_dir/domains 目录下创建的域。在其他位置创建的域不会被升级。
启动升级进程前,将所有域目录从不同位置复制到 install_dir/domains 目录中。
此问题已在多个 Linux 系统上出现,是 Java Desktop System 2 上最常见的问题,但在 RedHat 版本中也发现了此问题。
在最终安装程序屏幕上单击“启动升级工具”按钮后,安装程序无法启动升级工具以完成升级过程,并且无限期挂起,而不会返回命令提示符。
如果使用命令行安装模式来运行就地升级,将不会遇到此问题。
如果您以 GUI 模式运行就地升级并且遇到此问题,请通过在启动安装程序的终端窗口中按 Ctrl+C 组合键来退出安装程序。
使用以下命令从终端窗口启动升级工具:
install_dir/bin/asupgrade --source install_dir/domains --target install_dir --adminuser adminuser--adminpassword adminpassword --masterpassword changeit |
adminuser 和 adminpassword 的值应与要升级的安装所使用的值匹配。
在升级工具完成升级过程后,您还可以启动浏览器并输入以下 URL 来查看“关于”页面:
file://install_dir/docs/about.html
如果您还选择了用于注册产品的安装选项,请点击产品“关于”页面上提供的指向注册页面的链接。
在 Windows 上运行升级工具时,您必须关闭要升级的安装中的所有文件。如果某个文件仍然打开,则会看到升级工具挂起。
本节介绍已知的 Web 容器问题和相应的解决办法。
已访问 JSP 页面但无法进行编译,并且服务器日志包含错误消息“无法执行命令”以及以下堆栈跟踪:
at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec (Execute.java:655) at org.apache.tools.ant.taskdefs.Execute.launch (Execute.java:416) at org.apache.tools.ant.taskdefs.Execute.execute (Execute.java:427) at org.apache.tools.ant.taskdefs.compilers. DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter. java:448) at org.apache.tools.ant.taskdefs.compilers.JavacExternal. execute(JavacExternal.java:81) at org.apache.tools.ant.taskdefs.Javac. compile(Javac.java:842) at org.apache.tools.ant.taskdefs.Javac.execute (Javac.java:682) at org.apache.jasper.compiler.Compiler.generateClass (Compiler.java:396)
将 JSP 编译开关 fork 设置为 false。
可以通过以下两种方式之一来实现:
在全局范围内,通过将 ${S1AS_HOME}/domains/domain1/config/default-web.xml 中 JspServlet 的 fork init 参数设置为 false:
<servlet\> <servlet-name\>jsp</servlet-name\> <servlet-class\>org.apache. jasper.servlet.JspServlet</servlet-class\> .... <init-param\> <param-name\> fork</param-name\> <param-value\>false</param-value\> </init-param\> .... </servlet\>
在每个 Web 应用程序基础上,通过将 sun-web.xml 中的 fork JSP 配置属性设置为 false:
<sun-web-app\> <jsp-config\> <property name="fork" value="false" /\> </jsp-config\> </sun-web-app\>
以上任何一种设置都将阻止 ant 产生用于 javac 编译的新进程。