![]() ![]() |
| dev2dev 首页 > WebLogic Platform 8.1 SP4 > WebLogic Server 中的 I18n(国际化)问题 |
| WebLogic Server 中的 I18n(国际化)问题
WebLogic Server 中的 I18n(国际化)问题 以下各节描述了关于在多字节环境中使用 WebLogic Server 的一般注意事项。
建立分布式系统(使用 WebLogic Server 处理包含多字节字符的数据)之前,您应该了解如何指定特定于 Java 和 J2EE 的相应编码。此外,还应该根据与 WebLogic Server 连接的系统(如操作系统、Internet 及后端系统)的编码处理方式,控制编码转换。 下面简要描述了 WebLogic Server 中的编码处理。 WebLogic Server 是使用 Unicode 进行内部编码的纯 Java 应用服务器程序。 因此,WebLogic Server 可以同时处理所有语言的字符(只要 Unicode 能够处理这些字符)。 当 WebLogic Server 与外部系统交换字符数据时,需要进行编码转换。 在普通的操作系统中,几乎没有使用 Unicode(即 Java 的内部编码)的环境。操作系统使用分别针对每种平台定义的“本地编码”。例如,Windows 系统的本地编码是与语言相关的代码页,Unix 系统的本地编码是与区域(由 LANG 环境变量指定)对应的编码,而数据库的本地编码是在创建数据库时指定的字符集或由客户指定的字符集。 因此,在 WebLogic Server 中输入和输出信息时,您需要在本地编码与 Unicode 之间执行编码转换。当 WebLogic Server 与操作系统或外部资源交换字符数据时,始终会执行这种代码转换。 注意:序列化的 Java 类数据流中包含的字符作为 Unicode(UTF-8 编码)存放在类的内部信息中。这意味着您不必考虑序列化数据流的代码转换。例如,您不必考虑 EJB 或 RMI 的编码。 编码转换进程将使用大量的 CPU 资源,因为这种转换是针对每个字符逐一进行的。为了确保更好的系统性能,应在设计应用程序时尽量避免执行代码转换。 WebLogic Server 服务器自身的编码转换与应用程序组件和资源的编码转换是相互独立的 在 WebLogic Server 中,服务器本身的编码转换与 WebLogic Server 上应用程序组件和资源的编码转换是分开的。 在 WebLogic Server 中,服务器日志或管理控制台的编码是由服务器的 Java VM 或浏览器的语言设置的默认编码确定的,而与应用程序组件的编码或 WebLogic Server 提供的内容所用的语言无关。 而且,在配置 WebLogic Server 的行为时,可以不考虑 WebLogic Server 使用的区域或语言设置。 此外,您还可以为在 WebLogic Server 容器中配置的资源分别设置编码转换。 在 WebLogic Server 中指定编码时,您需要弄清楚要为哪些类别指定编码。然后,您需要检查是否可以创建有效的字符对象,并且是否可以将 WebLogic Server 中的字符对象正确地转换为所需的编码。 如上所述,您应该了解编码转换的行为以便正确地进行设置。如果不指定编码转换,应用程序将无法正确处理多字节字符。 如果不指定编码,将使用与当前情况对应的默认编码。默认编码可能会根据目标规范或环境的不同而有所不同。
由于不同的默认编码适用于不同的目标(如上所述),因此,如果不指定适当的编码,WebLogic Server 将无法正确处理多字节。为了能够控制编码转换,您应该了解以下各节内容。 在 Java 语言术语中,编码即表示“字符集”。描述字符集的词很多,但是每个词的定义略有不同。 编码或字符集表示一种定义,根据这种定义,将计算机可读代码分配给特定语言的字符集合,以便计算机可以处理这些字符。该定义在 Java 术语中称为“编码”,在 Internet 术语中称为“字符集”。 Java 语言在其 I/O 部分中吸收了这些差异,因此可以将所有字符作为 Unicode 在内部进行处理。这意味着,只要字符集的编码定义存在,Java 便可以对其进行处理,而且可以吸收各个系统之间存在的所有编码差异。但是,目前尚不存在能够处理现有编码之间所有细微差异的编码转换表。此外,由于与 Unicode 的一致性问题,现有编码表具有一些局限性。 在 Java Web 应用服务器中,Java 编码名与 MIME 字符集之间的差异尤为重要。MIME 字符集是由 IANA 定义的,用于 Internet 和 XML 文件中。WebLogic Server 使用映射表将 Java 编码名与 IANA 字符集名关联起来,从而吸收这种差异。通过该表,WebLogic Server 可以处理在 JSP 中定义为“Shift_JIS”或以 Java 编码名定义为“MS932”的文件。可以修改 WebLogic Server 的映射表,使其将“Shift_JIS”字符集作为“cp943”Java 编码进行处理。 Xerces 是 WebLogic Server 的内置 XML 解析器,具有自己的 IANA - Java 映射表。用户无法自定义该映射。例如,“Shift_JIS”的 IANA 字符集名将映射为 Java 编码名“SJIS”。 一般而言,在 WebLogic Server 中,应使用 Java 编码名指定编码,而在 J2EE、Internet 或 XML 中,则应使用 IANA 字符集名称。如有必要,您可以修改这种映射。
WebLogic Server 提供了日语、朝鲜语、中文和英语版的安装程序。英语、朝鲜语和中文安装程序可从 BEA Systems, Inc. (USA) 网站下载。日语版的安装程序可从 BEA Japan 网站下载。 下面列出了日语、朝鲜语、中文和英语版安装程序之间的区别。在所有这四种安装程序中,影响 WebLogic Server 行为的程序文件都是相同的,因此可将其视为同一个软件。此外,您可以在使用英语版安装程序安装的 WebLogic Server 与使用日语、朝鲜语或中文版安装程序安装的 WebLogic Server 之间顺利地进行交互。
日语、朝鲜语和中文版的 WebLogic Server 8.1 不支持下列功能:
下列项目使用 WebLogic Server 的 JVM 默认编码: 要更改日志输出等的编码,使其使用服务器的默认编码,请执行下列过程: WebLogic Server 和 Java Virtual Machine 中的编码 在 WebLogic Server 中,您可以设置具有不同作用域的编码。例如,您可以设置 ContentType/字符集以指定 WebLogic Server 输出到客户端的编码。此外,在使用 WebLogic jDriver 时,您也可以使用 weblogic.codeset 属性指定 JDBC 连接的编码。本文将对上述功能及其他多种功能进行讨论。注意,为特定作用域指定的编码与运行 WebLogic Server 的 Java VM 的默认编码之间没有任何关系。如果 Java VM 在英语区域中运行,则使用包含多字节字符的 JSP 文件提供服务不会有任何问题。但是,处理下列字符串时将使用 Java VM 默认编码: 这些字符串使用每种平台的 Java VM 默认编码(由 file.encoding Java 系统属性指定的编码)。例如,WebLogic Server 输出到终端控制台的日志消息的语言和编码取决于在 Java VM 中指定的编码。file.encoding java 系统属性基于平台环境和系统区域。如果希望切换 WebLogic Server 日志消息的语言和编码,则需要切换系统区域。启动 VM 后,您不能动态切换 Java VM 默认编码。重新启动 WebLogic Server 之前,请确保执行了以下设置。 丛“区域和语言选项”控制面板的“区域选项”中,选择“英语(美国)”、“日语”、“朝鲜语”、“中文(中国)”、“中文(台湾)”等,这样,服务器就会使用相应的 CP1252 或 MS932、MS949、GBK、MS950 作为默认编码。 例如,如果在 Solaris 上指定 EUCJIS,则 LANG 设置如下所示: LANG=ja Java VM 默认编码将成为 WebLogic Server 的默认编码。通过引用管理控制台中的日志消息,可以检查编码。步骤如下: 对域中所有 WebLogic Server 使用相同的编码。 在 WebLogic Server 中,域中的所有服务器必须具有相同的编码设置。 例如,当域中存在 Windows 平台时,可以统一使用 Shift_JIS 编码类型(例如 MS932)。如果服务器使用不同的编码,则服务器日志将无法正确显示。 对群集中所有 WebLogic Server 使用相同的编码。 在 WebLogic Server 中,群集中的所有服务器必须具有相同的编码设置。 例如,当群集中存在 Windows 平台时,请统一使用 Shift_JIS 编码类型(例如 MS932)。如果服务器使用不同的编码,则服务器日志将无法正确显示。 config.xml 文件将按 UTF-8 格式输入/输出。如果使用文本编辑器直接编辑该文件,请采用 utf-8 格式阅读和保存。 关于将 WebLogic Server 用作 Web 服务器的说明 下面列出了关于将 WebLogic Server 用作 Web 服务器的说明: 要将 contentType 字符集参数添加到 HTTP 头中以提供 HTML 文件,请在 web.xml 文件中插入下列定义,这些定义可以为 HTML 文件显式指定编码: <mime-mapping> <extension>html</extension> <mime-type>text/html;charset=Shift_JIS</mime-type> </mime-mapping> 这样,您可以使用如下 META 标记忽略 HTML 文件中的字符集设置: <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=Shift_JIS"> 创建 JDBC 连接缓冲池时,必须为使用多字节字符的 DB 连接指定相应的编码。您可能需要匹配 Web 层与 DB 层之间的编码转换映射。 有关详细信息,请参阅《WebLogic jDriver for Oracle (Deprecated)》中“WebLogic jDriver Advanced Features”一章中的“Codeset Support”。 在 WebLogic Server 中,J2EE 组件的 DD 文件中的多字节字符编码将按照 XML 声明中指定的方法处理。如果 DD 文件在 XML 声明中没有编码特性或没有 XML 声明,则该文件将作为 UTF-8 进行处理。 在 WebLogic Builder 或管理控制台中编辑 DD 文件并保存所做的更改时,该文件的编码将与初始文件中的相同。 在 WebLogic 生成器或管理控制台中创建的 DD 文件没有 XML 声明。更改这类文件的编码时,请在 XML 声明中设置编码特性,并对文件进行相应的编码转换。 管理控制台首次启动时显示的语言是在 Web 浏览器中指定的首选语言。例如,如果您正在使用日语版的 Windows 和 Internet Explorer,则管理控制台首次启动时将以日语显示。如果希望最初显示的语言为英语,可以通过在浏览器中将首选语言设置为“英语”实现这种更改。 在 WebLogic Server 8.1 中可以选择的管理控制台语言
请根据管理控制台所连接到的管理服务器的编码,选择相应的编码。 在控制台主页中,从“首选项”页面的“语言”下拉列表中选择所需的语言。
WebLogic Server 是 Java 应用程序。所有字符串都将作为 Unicode 字符串在内部进行处理。另一方面,各种字符集是用于 HTML 页面的。在 WebLogic Server 中处理 HTML 数据时,Unicode 与 HTML 字符集之间的代码转换是通过 Java 编码转换器执行的。因此,使用 Weblogic Server 时,如何在应用程序中执行服务器内部处理的 Unicode 字符串与 HTML 编码之间的转换是非常重要的。 WebLogic Server 提供了多个基于特定作用域设置编码的参数,通过针对所使用的应用程序应用这些参数,您可以成功解决这种问题。 此外,在 WebLogic Server 中,可以分别设置每个模块的编码,而与 JavaVM 默认编码无关。 在 WebLogic Server 中,用来设置编码的一些方法是由 J2EE 规范定义的。其他方法是 WebLogic 的专用规范。您无需全部指定。请阅读以下描述,并将您环境的大多数适当的编码设置组合在一起。
一般而言,作用域的定义越明确,优先级越高。例如,如果 Shift_JIS 设置为 JSP 容器的默认编码,而且在特定 JSP 的 page 标记中指定了 EUC-JP,则 page 标记中指定的编码优先级更高(即使用 EUC-JP)。 建议在应用程序中使用相同的特定编码,或者应该设置您首选使用的编码来覆盖 JSP 容器级别的作用域。然后,对于要求特殊编码处理的区域,在更具体的层(如 JSP 或 servlet 本身)上设置编码。 请注意,如果以下内容不针对 HTTP 请求和 HTTP 响应指定任何编码,则使用 ISO-8859-1 编码。
下列部分详细说明了 Servlet 和 JSP 的每个设置。 指定 HTTP 响应的编码 - response.setContentType() 要指定 Servlet 生成的 HTML 页的编码,请使用 setContentType() 方法。对 setContentType() 的调用将指定以下信息: 因此,在获得写入器之前,必须先调用 setContentType()。 res.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = res.getWriter(); 该调用指定 HTTP 头中的 contentType。这意味着将同时指定浏览器显示的编码。 指定 HTTP 请求的编码 --- request.setCharacterEncoding 或 <input-charset> 现在,您已经完成了 HTTP 响应的编码设置,这些响应是使用上述方法从 WebLogic Server 发送到客户端的数据。下面描述了在将数据从客户端发送至 WebLogic Server 时如何设置 HTTP 请求的编码。
例如,要指定 <input-charset>,可以对其进行设置以便按以下方法获取请求 URL 的编码:
如下所示,在部署描述符 (weblogic.xml) 中写入目标 Web 应用程序的 <input-charset>。 在 <charset-param>(嵌套在 <weblogic-web-app> 中)中,写入要指定其编码的请求 URL 路径,以及希望在 IANA 名称中为 HTTP 请求指定的编码。 有关在 Java 编码名与 IANA 字符集之间进行映射的信息,请参阅“在 Java 编码与 IANA 字符集之间进行映射(weblogic.xml 中的设置)”一节。 在下面的示例中,“/*”的编码设置为 Shift_JIS,“/rus/joe/*”的编码设置为 ISO-8859-1。 <charset-params> <input-charset> <resource-path>/*</resource-path> <java-charset-name> Shift_JIS</java-charset-name> </input-charset> </charset-params> <charset-params> <input-charset> <resource-path>/rus/joe/*</resource-path> <java-charset-name>ISO-8859-1</java-charset-name> </input-charset> </charset-params> 有关此设置的详细信息,请参阅《Developing Web Applications for WebLogic Server》中的“charset-params”一节。 指定 JSP 文件的编码 - pageEncoding(可选) 要指定 WebLogic Server JSP 容器或 JSP 编译器用来读取 JSP 文件的编码,请在 page 标记中指定 pageEncoding 指令,如下所示: <%@ page contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS" %> 指定页面输出的编码 --- page 标记中的 contentType 指令 要指定页面输出的编码,请在 page 标记中指定 contentType 指令,如下所示: <%@ page contentType="text/html; charset=Shift_JIS" %> 此外,当您在页面指令中指定 contentType 时,将在 HTTP 响应的 HTTP 头中指定相同的 contentType。这意味着将同时指定浏览器显示的编码。 如果未设置 pageEncoding 指令,会将 contentType 指令用作读取 JSP 文件的编码。 如果 JSP 容器找到了 contentType 设置,它将停止解析 JSP 文件,将文件读取器切换至新指定的编码,并重新开始从头解析 JSP 页面。如果在一个文件中指定了多个 contentType,将会出现解析错误。因此,当使用静态包含命令将一个文件包含于另一个文件时,如果这两个文件拥有各自的编码规范,将会出现错误。在动态包含中,不会出现错误,但会生成乱码字符。 注意:即使在一个文件中指定了多个 contentType,也可以防止出现解析错误,只要每个文件指定相同的编码即可(请参阅“静态与动态包含以及编码差异”一节)。 <jsp-param> <param-name>backwardCompatible</param-name> <param-value>true</param-value> </jsp-param> 例如,使用静态包含命令(<%@ include)执行包含时,如果“包含来源”和“包含目标”拥有各自的页面指令,而且单个转换单元具有多个页面指令,但是每个页面指令都指定相同的编码,则不会出现任何问题。 可以像在 Servlet 中指定编码那样,在 JSP 中指定 HTTP 请求的编码。请参阅“Servlet”一节。 <% request.setCharacterEncoding("Shift_JIS"); String pval = request.getParameter(pname); %>request.setCharacterEncoding or <input-charset> Java 编码与 IANA 字符集之间的映射(在 weblogic.xml 中设置) 使用 setContentType() 方法或在 page 标记中使用 contentType 指令指定编码时,请使用 IANA 字符集名称。但是,当在 WebLogic Server(Java 应用程序)中处理编码时,这些值必须是 Java 编码名。WebLogic Server 内部也有默认映射,而且通常都使用这些默认映射。默认映射还包括那些未在 IANA 中定义、但通常在 HTML 的 Content-Type 中使用的映射(请参阅 WebLogic Server 中定义的 MIME-Java 编码映射表)。 可以根据自己的意愿更改此映射。请如下所示在 Web 应用程序部署描述符中设置映射。 例如,contentType 中的“Shift_JIS”设置在 WebLogic Server 中作为 SJIS 进行处理,这是因为 IANA 字符集“Shift_JIS”映射为 Java 编码“Shift_JIS”(在 JDK1.4 中,Shift_JIS 作为 SJIS 的别名使用)。 注意:在 Java 1.3 中,IANA 字符集 Shift_JIS 作为 MS932 进行处理(从 JDK 1.1.8 至 JDK 1.4.0;在 JDK1.4.1 或更高版本中,Shift_JIS 作为 SJIS 进行处理)。 这样,如果使用 Shift_JIS 作为默认设置,则不能使用 MS932 特有的字符。 可以通过在 weblogic.xml 中定义 <charset-mapping> 来覆盖默认映射。 <charset-params> <charset-mapping> <iana-charset-name>Shift_JIS</iana-charset-name> <java-charset-name>MS932</java-charset-name> </charset-mapping> </charset-params> 注意,此设置不符合 J2EE 规范。在 WebLogic Server 6.0 中,它是在 web.xml 中设置的。在 WebLogic Server 6.1 或更高版本中,已改在 Web 应用程序部署描述符 weblogic.xml 中进行设置了;而且,元素名等也发生了变化。从 WebLogic Server 6.0 进行迁移时,请注意这些更改。 使用 ISO-8859 编码对 HTTP 请求进行编码的方法 如果在 <input-charset> 中将 iso-8859 指定为 HTTP 请求的编码,仍然可以通过以下方法获取包含不同编码的 HTTP 请求。 new String(request.getParameter(itemQ[i]).getBytes ("8859_1"), "SJIS") 但是,对于通过以下方法在 HTTP 请求的 HTTP 头中指定 contentType 的 HTTP 客户端,则不能使用此解决方法,因为在 HTTP 头的 contentType 中指定的编码优先于 <input-charset> 中指定的编码。这种情况下,必须修改应用程序代码。 Content-Type:application/x-www-form-urlencoded;charset=shift_jis <%@ include file="relativeURL" %> 这种情况下,在执行 JSP 编译之前,所有包含文件都将被加载并收集到一个文件中。因此,如果在指定包含的文件中指定了编码,则被包含的文件将作为与包含文件使用相同的编码进行处理,即使它未指定编码。在 WebLogic Server 6.1 或更早的版本中,如果“包含来源”与“包含目标”拥有相同的编码规范,则不会出现编译错误。在 WebLogic Server 8.1 中,如果“包含来源”与“包含目标”拥有各自的页面指令,则将出现编译错误。为避免这种问题,请将 weblogic.xml 中的“backwardCompatible”设置为 True。 即使将 backwardCompatible 设置为 True,如果“包含来源”与“包含目标”之间的编码设置存在差异,也会出现 JSP 编译错误。 <jsp:include page="{ relativeURL | <%= expression %>}" flush="true" /> 在动态包含中,加载页面时不会包含该页面,而是将其保留在标记状态。页面是在执行 JSP 时实现包含的。因此,执行包含操作的 JSP 中设置的编码不会应用于被包含的文件。 将使用多字节字符的 CGI 服务迁移至 WebLogic Server 上的 CGI servlet 时,您必须在 CGI 程序生成的 HTTP 头中指定相应的 contentType 字符集参数。如果未设置 contentType,则将使用 ISO-8859-1,即 J2EE Servlet 容器的默认编码。 此外,为了从客户端正确接收输入字符串,还必须使用相应的编码。您需要在目标 Web 应用程序的 DD 文件中编写该代码。如果未设置该代码,将会使用 ISO-8859-1。 在 WebLogic Server Web Service 中,编码处理遵从 SOAP1.1 和 SOAP1.2 规范(*注释 1)。基于 SOAP1.1 规范的 HTTP/SOAP 消息包含 text/xml 媒体类型,这些消息的编码将根据 RFC2376 进行处理。以下说明了基于 RFC2376 规范的行为。基于 SOAP 1.2 规范的 HTTP/SOAP 消息包含 application/soap+xml 媒体类型,这些消息的编码将根据 RFC3023 进行处理。以下说明了基于 RFC 规范的行为:
WebLogic Workshop 以及 WebLogic Sever 8.1 也会根据该规范进行操作。因此,请确保为调用 Web Service(由 WebLogic Workshop 使用 HTTP/SOAP 开发)的客户端正确指定了 contentType 字符集。 由 WebLogic Server 生成的所有 HTTP/SOAP 消息都使用 utf-8 进行编码。在生成过程中,“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 运行在英语区域中。 -Iweblogic.webservice.i18n.charset=utf-8 Web Service 主页是使用服务器 VM 默认编码生成的。 UDDI 浏览器仅支持 us-ascii 字符, 无法正常使用多字节字符。 在 WebLogic Server 中,要将编码信息添加到使用 XML Streaming API 生成的 XML 头中,请如下使用 ElementFactory 类的 createStartDocument(): XMLOutputStreamFactory factory = XMLOutputStreamFactory.newInstance(); XMLOutputStream output = factory.newOutputStream(new OutputStreamWriter(new FileOutputStream(fname),"Shift_JIS")); output.add(ElementFactory.createStartDocument("Shift_JIS","1.0")); output.flush(); 下面是关于使用 XML 流 API 解析包含多字节字符的 XML 文档的说明。要点与使用 Xerces 解析器的注意事项相同。 通过流为解析器提供输入时将使用字节流。这将启用解析器的 XML 编码自动检测功能,因此解析器可以使用由 XML 声明中的编码特性指定的编码生成字符流,从而确保正确进行解析。 通过 Unicode 字符流进行输入时,解析器将忽略 XML 头中的编码设置。 使用 BEA WebLogic Type4 Oracle 驱动程序 在 WebLogic Server8.1 中,将安装每种数据库(如 Oracle、SQL Server、DB2 等)的 BEA Weblogic Type4 驱动程序。作为一个示例,以下内容说明了如何使用 WebLogic Type4 Oracle 驱动程序来创建环境: 在 WebLogic Server 8.1 中,BEA WebLogic Type4 驱动程序安装在 WL_HOME\server\lib
目录中。这些文件包含在 weblogic.jar 的清单类路径中,并且自动添加至服务器类路径中。 配置使用 BEA WebLogic Type4 Oracle 驱动程序的连接缓冲池时,请执行以下设置: 有关详细信息,请参阅 WebLogic Type 4 JDBC Drivers。 从管理控制台设置连接缓冲池
手动设置连接缓冲池 在创建连接缓冲池的域的 config.xml 中添加以下内容: (更改标有下划线部分的值,使其与您的环境匹配) <JDBCConnectionPool DriverName=weblogic.jdbc.oracle.OracleDriver"
Name="testpool"
Password="tiger"
Properties="user=scott;portNumber=1521;SID=testdb;serverName=testserver"
Targets="myserver"
TestTableName="SQL SELECT 1 FROM DUAL"
URL="jdbc:bea:oracle://jpw2k17:1521"/>
使用 BEA WebLogic jDriver for Oracle 以下是对 BEA WebLogic jDriver for Oracle 的环境设置的说明: 要使用 BEA WebLogic jDriver for Oracle 驱动程序,必须具备
WebLogic OCI 驱动程序本地库。对于 32 位 Windows 系统,WebLogic OCI 驱动程序本地库安装在 WL_HOME\server\bin\
中。对于 Unix 平台,WebLogic OCI 驱动程序本地库安装在 WL_HOME/server/lib/{OS name}/ 中。 除了 WebLogic OCI 驱动程序本地库设置以外,以下设置是使用 JDriver for Oracle 所必须具备的:
为了使用 WebLogic jDriver for Oracle 配置连接缓冲池,请完成以下设置。有关详细信息,请参阅《Configuring WebLogic jDriver for Oracle》中的“Setting Up a Connection Pool”。
从管理控制台设置连接缓冲池
Vendor : Oracle
Driver : Oracle's Driver(Type 2) Version 8.1.7,9.0.1,9.2.0
(请将所有其他项目设置为与您的环境匹配)
手动设置连接缓冲池 在创建连接缓冲池的域的 config.xml 中添加以下内容: (更改标有下划线部分的值,使其与您的环境匹配) <JDBCConnectionPool DriverName=weblogic.jdbc.oci.Driver"
Name="testpool"
Password="tiger"
Properties="user=scott;server=testdb.testserver"
Targets="myserver"
TestTableName="SQL SELECT 1 FROM DUAL"
URL="jdbc:weblogic:oracle"/>
以下说明如何为使用 Oracle OCI 驱动程序进行相应的环境设置: 在使用 Oracle OCI 驱动程序的域中,如下设置 startWebLogic.cmd(或
startWebLogic.sh):
%ORACLE_HOME% 现在,您可以使用 Oracle OCI 驱动程序直接从 WebLogic Server 上的 JDBC 客户端(JSP、Servlet 等)连接至数据库。有关使用 Oracle OCI 驱动程序对 JDBC 客户端进行编程的详细信息,请参阅 Oracle 手册。 使用 Oracle OCI 驱动程序设置连接缓冲池时,请执行以下设置: 从管理控制台设置连接缓冲池
手动设置连接缓冲池
*在 CLASSPATH 中添加以下内容: %ORACLE_HOME%\jdbc\lib\classes12.zip %ORACLE_HOME%\jdbc\lib\nls_charset12.zip *在 PATH 中添加以下内容: %ORACLE_HOME%
(更改标有下划线部分的值,使其与您的环境匹配) <JDBCConnectionPool DriverName=oracle.jdbc.driver.OracleDriver"
Name="testpool"
Password="tiger"
Properties="user=scott"
Targets="myserver"
TestTableName="SQL SELECT 1 FROM DUAL"
URL="jdbc:oracle:oci:@testdb.testserver"/>
使用 Oracle Client 8 时的状态 URL,如下所示。 URL="jdbc:oracle:oci8:@testdb.testserver" Oracle Thin 9.2.0 驱动程序与 WebLogic Server 8.1 一同安装。下面描述如何设置 Orcale Thin 驱动程序。 在 WebLogic Server 8.1 中,Oracle Thin 9.2.0 安装在 WL_HOME\server\lib 目录中。该文件包含于
weblogic.jar 的清单类路径中,并且自动添加至服务器类路径中。 因此,您可以使用 Oracle Thin 驱动程序从 WebLogic
Server 中的 JDBC 客户端(JSP、Servlet 等)直接连接至数据库。
nls_charset12.zip 支持的字符集 Oracle Thin 驱动程序在 CHAR 和 VARCHAR 类型中支持 US7ASCII、WE8DEC、ISO-LATIN-1、UTF-8
字符集。如果使用其他的字符集,请将 nls_charset12.zip 添加到 CLASSPATH 中。nls_charset12.zip
将安装在 WL_HOME\ext\lib 中。 连接缓冲池设置 使用 Oracle Thin 驱动程序配置连接缓冲池时,请执行以下操作。 有关详细信息,请参阅《Programming WebLogic JDBC》中的 Configuring and Using WebLogic JDBC。 从管理控制台设置连接缓冲池 a) 配置域。 b) 使用管理控制台中的“服务”>“JDBC”>“连接缓冲池”选项卡打开“配置新的 JDBC Connection Pool”。 c) 在“选择数据库”屏幕中,选择“Oracle”作为数据库类型,然后选择“Oracle`s
Driver (Thin) 在下一个屏幕中,设置连接缓冲池的名称和属性。 e) 在“测试数据库连接”屏幕中测试驱动程序配置。 f) 成功连接之后,请执行下一个屏幕中的“创建和部署”。 在配置向导中创建域期间设置连接缓冲池 a) 启动配置向导。 b) 选择可选模板,然后选择自定义配置。 c) 在“数据库 (JDBC) 选项”屏幕中选择“是”。 d) 在“配置 JDBC 连接缓冲池”屏幕中执行以下设置: Vendor : Oracle
Driver : Oracle? Driver(Thin) Version 8.1.7,9.0.1,9.2.0
(请将所有其他项目设置为与您的环境匹配)
手动设置连接缓冲池 在创建连接缓冲池的域的 config.xml 中添加以下内容: (更改标有下划线部分的值,使其与您的环境匹配) <JDBCConnectionPool DriverName="oracle.jdbc.driver.OracleDriver"
Name="testpool"
Password="tiger"
Properties="user=scott"
Targets="myserver"
TestTableName="SQL SELECT 1 FROM DUAL"
URL="jdbc:oracle:thin:@testserver:1521:testdb/">
使用 OCI 驱动程序时,您必须为 NLS_LANG 和 weblogic.codeset 指定相同的编码。如果将这些参数设置为相同的值,将会在
Oracle 端执行编码转换,因为您已作为客户端连接至 Oracle,且您具有特定的 NLS_LANG。 如果您使用不同的转换器在平台本地编码与 Java 编码之间进行转换,字符可能无法正确处理。这是由 Unicode 和 JIS 的定义造成的。 例如,如果使用以下转换器在平台本地编码与 Java 编码之间进行转换。 DB -------------> WebLogic Server -------------> Web 浏览器 SJIS Windows-31J 这种情况下,您必须专门使用 SJIS 来处理从 WebLogic Server 输出到 Web 浏览器的内容。例如,如果在 JSP 的 page 标记中指定了以下编码: <%@ page contentType="text/html; charset=Windows-31J" %> 必须将“Windows-31J”设置更改为将从 Unicode 转换为本地平台编码的“Shift_JIS”。 因此,在这种情况下,要更改 WebLogic Server 内部包含的默认编码映射表,则必须在 Web 应用程序的部署描述符 (weblogic.xml) 中写入以下定义。 <charset-params> <charset-mapping> <iana-charset-name>Shift_JIS</iana-charset-name> <java-charset-name>SJIS</java-charset-name> </charset-mapping> </charset-params> Java 的 MS932 编码表支持转换为外部字符区域。通过使用 MS932,您可以提供使用 iMode 外部字符的内容。 ¥src_ja 目录下的日语代码示例需要在 SJIS 区域中生成(仅适用于日语版) WebLogic Server 8.1 以 Shift_JIS 编码方式提供日语代码示例。因此,要生成代码示例,请设置以 Shift_JIS 编码方式运行 Ant 生成脚本的外壳环境。 |
| BEA.com BEA中国dev2dev在线 网络支持 站点地图 产品文档 合作伙伴站点 | ||