|
WebLogic Workshop 8.1 SP5:在多字节环境中使用
WebLogic Workshop 8.1 的注意事项 已知问题 已解决问题
WebLogic Workshop 8.1 的注意事项
WebLogic Workshop 8.1 国际化摘要
WebLogic Workshop 8.1 中实现了使用多字节环境所必需的功能。WebLogic Workshop 基于 WebLogic Server 运行。因此,WebLogic Server 的现有限制同样适用于利用 Workshop 开发的应用程序。
SOAP 消息及其编码的处理
接收 SOAP 消息
WebLogic Server 的 Web Service 功能遵从 SOAP 1.1 和 SOAP 1.2 规范。基于 SOAP1.1 规范的 HTTP/SOAP 消息包含 text/xml 媒体类型,这些消息的编码将根据 RFC2376 进行处理。基于 SOAP 1.2 规范的 HTTP/SOAP 消息包含 application/soap+xml 媒体类型,这些消息的编码将根据 RFC3023 进行处理。以下说明了基于 RFC 规范的行为:
SOAP1.1:
HTTP/SOAP 请求字符集的说明由 HTTP 头中的 ContentType 字符集参数确定。SOAP 消息 XML 声明的 encoding 特性将被忽略。简写 ContentType 的字符集参数时,该字符集参数将被视为 US-ASCII 进行处理。
SOAP1.2:
HTTP/SOAP 请求字符集的说明由 HTTP 头中的 ContentType 字符集参数确定。SOAP 消息 XML 声明的 encoding 特性将被忽略。简写 ContentType 的字符集参数时,将引用 XML 声明的 encoding 特性。如果 ContentType 的字符集参数或 XML 声明的 encoding 特性不存在,它将被视为 utf-8 进行处理。
为了保证 WebLogic Server 8.1 遵从此规范,WebLogic Workshop 的操作也必须遵从此规范。因此,应确保为使用 HTTP/SOAP 调用 Web Service(使用 WebLogic Workshop 开发)的客户端正确指定了 ContentType 的字符集。
发送 SOAP 消息
对于 WebLogic Server,默认情况下将使用 UTF-8 生成 HTTP/SOAP 消息。在生成过程中,会将“encoding=UTF-8”添加到 SOAP 消息的 ContentType 头中。
注意:如果使用英语区域(如 UNIX 中的 LANG=C 环境)启动 WebLogic Server,则只能对 SOAP 消息使用 us-ascii 字符。使用其他字符时,无法保证能够正常操作。如果要在 Web Service 中使用多字节字符,请确保采用相应的区域启动 WebLogic Server。
如果已使用英语区域启动 WebLogic Server 并使用非 us-ascii 字符,请在 WebLogic Server 启动脚本文件中定义以下启动选项。这将生成 utf-8 格式的消息,即使 WebLogic Server 运行在英语区域中。
-Dweblogic.webservice.i18n.charset=utf-8
注意:请在非 ASCII 的 SOAP 消息中使用 UTF-8。
Workshop IDE 处理的文件和编码
(1) 通道文件(扩展名:channel)
默认编码:UTF-8 规范方法:使用 xml 的 encoding 特性指定 示例:<?xml version="1.0" encoding="UTF-8" ?>
(2) HTML 文件(扩展名:html)
默认编码:ISO-8859-1 规范方法:使用 META 标记的内容特性指定。 示例:<META http-equiv="Content-Type" content="text/html;charset=Shift_JIS">
(3) JSP 文件(扩展名:jsp)
默认编码:ISO-8859-1 规范方法:使用 page 标记指定。 示例:<%@ page language="java" contentType="text/html;charset=UTF-8"%> 使用 weblogic.xml 指定
示例:<jsp-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</jsp-param>
* 如果采用这两种方式同时指定了编码,则优先使用 page 标记指定的编码。
(4) JSP 片段文件(扩展名:jspf)
默认编码:ISO-8859-1 规范方法:使用 weblogic.xml 指定
示例:<jsp-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</jsp-param>
(5) WSDL 文件(扩展名:wsdl)
默认编码:UTF-8 规范方法:使用 xml 的 encoding 特性指定 示例:<?xml version="1.0" encoding="UTF-8" ?>
(6) WS 安全策略文件(扩展名:wsse)
默认编码:UTF-8 规范方法:使用 xml 的 encoding 特性指定 示例:<?xml version="1.0" encoding="UTF-8" ?>
(7) XML 文件(扩展名:xml)
默认编码:UTF-8 规范方法:使用 xml 的 encoding 特性指定 示例:<?xml version="1.0" encoding="UTF-8" ?>
(8) XML Schema(扩展名:xsd)
默认编码:UTF-8 规范方法:使用 xml 的 encoding 特性指定 示例:<?xml version="1.0" encoding="UTF-8" ?>
(9) 其他文件
使用 Java VM 的默认编码读取/写入文件,而不指定编码。
Web 应用程序编码
Web 应用程序的默认编码为 UTF-8。 如果希望使用其他编码创建应用程序,可以通过“工具”-->“应用程序属性”-->“编码”指定编码。 此设置将反映在 weblogic-application.xml 的 webapp.encoding.default 参数的值中。 关于 webapp.encoding.default 参数,请参阅 J2EE Default Encoding Specification。
已知问题
XScript 的已确认问题
如果在 XScript 文件中使用多字节字符,将无法读取 XScript 文件,而且也无法完成生成操作。(CR138066)
使用 Workshop IDE 编辑 JSP 静态包含文件时的已确认问题
如果未指定 meta 标记的 Content-Type,则 Workshop IDE 不会在 HTML 文件中包含多字节字符。
解决办法:通过使用 JSP 片段文件(扩展名:jspf),而不是使用 HTML 文件,并指定要保存在 weblogic.xml 文件中的编码,可以在 Workshop IDE 中编辑包含多字节字符的静态包含文件。
当 JSP 文件为静态包含到另一个 JSP 中的文件时的已确认问题
根据 J2EE 的 JSP 规范,如果静态包含文件为 JSP,并在包含源的 JSP 和包含目标的 JSP 中同时指定了 page 指令的 contentType,则会导致编译错误。
解决办法:下面两种解决办法都是有效的,但对于 WebLogic Workshop 而言,建议采用第一种方法。
- 使用 JSP 片段文件(扩展名:jspf)作为静态包含文件,而不是使用 JSP 文件,并仅为 page 指令的 contentType 规范指定包含源的 JSP。
- 使用 WebLogic Server JSP 编译器,而不是 WebLogic Workshop JSP 编译器。按照如下方法,注释掉在 weblogic.xml 中指定为默认设置的 jspServlet 参数规范,并将其再次指定为 backwardCompatible 参数。有关 backwardCompatible 的详细信息,请参阅“在多字节环境中使用 WebLogic Server 8.1J”。
<!-- 将 jspServlet 参数注释掉以恢复为 weblogic 的 jspc --> <!-- <jsp-param> <param-name>jspServlet</param-name> <param-value>weblogic.servlet.WlwJSPServlet</param-value> </jsp-param> -->
<jsp-param> <param-name>backwardCompatible</param-name> <param-value>true</param-value> </jsp-param><br>
使用 Workshop IDE 编辑 HTML 文件时的已确认问题
如果 HTML 文件的 <html> 元素中具有可选特性(如 <html version="1.0">),Workshop IDE 就不能在 HTML 文件中包含多字节字符。
Web Service URL 的已确认问题
在 WebLogic Workshop 中,无法正确处理 WSDL 文件或 JWS 控件中对 Web Service 的 URI 引用中的字符编码。由于这种限制,无法在 Web Service 项目名、文件夹名或 JWS 文件名中包含多字节字符。
编译时出现的错误消息的已确认问题
在开发环境中编译 java、jsp、jws、jpd、jdx、dtf、xq 等文件时,将显示英语错误消息。
添加第三方 Workshop IDE 扩展功能时的已确认问题
即使安装的第三方 Workshop IDE 扩展功能只有英语版帮助,该英语版帮助也不会添加到现有的非英语版帮助中。
为在 SP2 之前创建的第三方 Workshop IDE 添加联机帮助时的已确认问题
在 Service Pack 3 之后的版本中,存储日语版联机帮助的文件夹名称已从“ja”更改为“ja_JP”,因此,在安装为 SP2 创建的扩展功能所附带的联机帮助时,必须执行以下步骤。
- 将 ja 目录中的所有文件复制到 ja_JP 目录。
- 选择 Workshop IDE 的“重建帮助 | 搜索索引”。
这样,扩展功能的帮助文件即被添加到日语版联机帮助文件中,同时目录和搜索索引也合并在其中。
在 Workshop IDE 中添加 DBScripter 时的已确认问题(仅限于日语)
DBScripter 的联机帮助作为样例以 SP2 格式与 Workshop IDE 捆绑在一起,并且安装在以下目录中。 \weblogic81\samples\workshop\ExtensionDevKit\ControlDevKit\DBScripter\docs\help\doc\ja
为了将此联机帮助与 IDE 的联机帮助进行合并,必须按照以下方式更改上述文件夹名称。
\weblogic81\samples\workshop\ExtensionDevKit\ControlDevKit\DBScripter\docs\help\doc\ja_JP
窗口字体和字号的已确认问题(仅限于 Linux)
由于对话框大小限制,如果窗口字体不是“默认字体”,且字号不是“10”,则在新建应用程序时部分说明文本将无法显示。
解决办法:虽然无法读取全部说明文本不会导致任何操作问题,但是如果希望显示所有说明文本,请按上述说明设置窗口字体和字号。
WebLogic Server 启动控制台屏幕的已确认问题(仅限于 Linux)
从 WebLogic Workshop 菜单的 [工具 | WebLogic Server | 启动 WebLogic Server] 中启动 WebLogic Server 时,控制台屏幕将启动,但是此控制台 (xterm) 无法处理多字节字符。因此,如果在多字节区域中启动 WebLogic Server,则从服务器输出的消息将产生无效字符。
解决办法:从与多字节字符兼容的控制台(如 kterm)中手动启动 WebLogic Server。
项目属性的已确认问题
不能将 Schema 项目属性生成设置为非正常值。否则,将显示错误消息,并会关闭 Workshop IDE。(CR200460)
安装的已确认问题
如果为 BEA 主页或安装目录设置了包含多字节字符的名称,则无法安装。该设置会导致在 Workshop IDE Server 属性 JDK Home 和 WebLogic Home 路径中出现乱码字符。
调试的已确认问题
Workshop IDE 中的“立即”调试窗口无法显示多字节字符。(CR129930)
应用程序名称和项目名称的已确认问题
若应用程序名称或项目名称使用日语,部署时将发生 ServletException。(CR238604)
页面流调试的已确认问题
当对应用程序名称为日语的页面流进行调试时,测试浏览器中将显示“specified path is not found”错误。
已解决问题
Web Service 协议的已解决问题
当具有 http-xml、jms-soap 或 jms-soap12 协议的消息包含多字节字符时,消息无法进行解析,从而导致错误。此问题在 8.1SP3 中已得到了修正。
Web Service 消息加密的已解决问题
如果通过 WS-Security 加密了包含多字节字符的 Web Service 消息,则解析消息时会产生错误。此问题在 8.1 SP3 中已得到了修正。
BEA Tuxedo 控件的已解决问题(仅限于日语版)
在 Tuxedo 控件功能的帮助中,针对 WebLogic Workshop 8.1 SP2 中的 BEA Tuxedo 控件仅发布了英文版帮助。在 WebLogic Workshop 8.1 SP3 版本中包括了日语版的帮助,可以在以下目录中找到。
%WL_HOME%\workshop\help\doc\ja_JP\Tuxedo
WebLogic Server 选项的已解决问题
在带有 weblogic.http.URIDecodeEncoding 选项的 WebLogic Server 中,如果在 Web Service 测试浏览器中输入多字节字符,则会出现问题,但该问题已经在 8.1 SP4 中得到解决。(CR129900)
创建数据库 EJB 的已解决问题
如果从一个数据库创建实体 Bean,并且该数据库的列名称中使用多字节字符,则该实体 Bean 生成将失败,但该问题已经在 8.1 SP4 中得到解决。(CR122203) |