科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道WebLogic Server 国际化

WebLogic Server 国际化

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

国际化概述 WebLogic Server 中 I18n 的主要特性: 在 WebLogic Server 内部,所有字符都按 Unicode 进行处理。只要输入或输出字符数据,就执行代码转换。

作者:中国IT实验室 来源:中国IT实验室 2007年9月22日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

CGIServlet

将使用多字节字符的 CGI 服务迁移到 WebLogic Server 中的 CGI Servlet 时,必须在 CGI 程序生成的 HTTP 头中指定适当的 contentType 字符集参数。如果未设置 contentType,则使用 ISO-8859-1,它是 J2EE Servlet 容器的默认编码。

还必须使用 input-charset 参数,以便从客户端正确接收输入字符串。您需要将它写入到目标 Web 应用程序的 DD 文件中。如果未设置它,则使用 ISO-8859-1。

WebService

SOAP 消息及其编码的处理

接收 SOAP 消息

在 WebLogic Server Web Service 中,编码处理符合 SOAP1.1 和 SOAP1.2 规范(*注释 1)。SOAP 1.1 HTTP/SOAP 消息的媒体类型是“text/xml”,其编码处理在 RFC2376 中定义。对于 SOAP 1.2 HTTP/SOAP 消息,媒体类型是“application/soap+xml”,其编码处理在 RFC3023 中定义。这些 RFC 规范定义下列行为:

SOAP 1.1

  • HTTP 头中的 ContentType 字符集参数用于确定 HTTP/SOAP 请求的编码。
  • 忽略 XML 声明中的编码特性。
  • 如果未使用 contentType 指定字符集,则此消息将作为 US-ASCII 进行处理。

SOAP 1.2

  • HTTP 头中的 ContentType 字符集参数用于确定 HTTP/SOAP 请求的编码。
  • 忽略 XML 声明中的编码特性。
  • 如果未使用 contentType 指定字符集,则使用 XML 声明中的编码特性。
  • 如果未指定 XML 声明中的 contentType 字符集参数或编码特性,则此消息将作为 UTF-8 进行处理。

与 WebLogic Server 一样,WebLogic Workshop 也根据此规范进行操作。因此,对于使用 HTTP/SOAP 来调用 WebLogic Workshop 开发的 Web Service 的客户端,请确保指定了正确的 contentType 字符集。

发送 SOAP 消息

WebLogic Server 生成的所有 HTTP/SOAP 消息都以 UTF-8 编码。在生成过程中,会将“encoding=UTF-8”添加到 SOAP 消息的 HTTP 头中。

注意:以英语区域(locale)设置(例如在 UNIX 中指定 LANG=C)启动 WebLogic Server 时,在 SOAP 消息中只能使用 us-ascii 字符,不支持其他字符。如果要在 Web Service 中使用简体中文字符,请使用简体中文区域(locale)设置启动 WebLogic Server。

如果要在以英语区域设置启动的 WebLogic Server 上使用 us-ascii 之外的其他字符,请在 WebLogic Server 启动脚本文件中设置下列启动选项。这甚至可以使 WebLogic Server 在英语区域设置环境中以 UTF-8 生成消息。

注意:对于 SOAP 消息,强烈建议使用 UTF-8。

-Iweblogic.webservice.i18n.charset=utf-8

Web Service 主页

Web Service 主页是以服务器 VM 默认编码生成的。

UDDI 浏览器

UDDI 浏览器只支持 us-ascii 字符。它不能正确处理多字节字符。

XML --- StreamParser 中的多字节字符处理

要将编码信息添加到使用 XML 流 API 生成的 XML 头中,请按如下方式使用 ElementFactory 类的 createStartDocument():

XMLOutputStreamFactory factory = XMLOutputStreamFactory.newInstance();
XMLOutputStream output = factory.newOutputStream(new
                    OutputStreamWriter(new FileOutputStream(fname),"GB2312")); 
output.add(ElementFactory.createStartDocument("GB2312","1.0"));
output.flush();

下面是关于使用 XML 流 API 解析包含简体中文字符的 XML 文档的说明。

当通过流为解析器提供输入时,请使用字节流。这可以启用解析器的 XML 编码自动检测。解析器可以生成字符流,该字符流使用由 XML 声明中的编码特性指定的编码,从而确保能够进行正确的解析。

当通过 Unicode 字符流提供输入时,解析器将忽略 XML 头中的编码设置。在这种情况下,用户负责提供适当的字符流。

JDBC

设置 WebLogic jDriver for Oracle 的使用环境

要使用 weblogic.jdbc.oci.Driver,请按如下所示设置环境。请注意,需要设置 jDriver 许可证。

  1. 将下列更改添加到 startWebLogic.cmd 文件。

    指定 Oracle 的 bin 目录的路径和 WebLogic Oracle Oci 驱动程序本地库的 bin 目录的路径。请根据 Oracle 版本使用相应的 Oci 驱动程序。

    对于 Oracle 8.1.7:%WL_HOME%\bin\oci817_8;d:\oracle\ora81\bin

    对于 Oracle 9.0.1:%WL_HOME%\bin\oci901_8;d:\oracle\ora90\bin

  2. 指定 Oracle 环境变量 NLS_LANG。

    NLS_LANG 的编码与 weblogic.codeset(jDriver for Oracle 的连接属性)的编码必须始终相同。

    NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    有关 NLS_LANG 与 weblogic.codeset 之间的关系的信息,请参阅“Configuring and Using WebLogic jDriver for Oracle”中的 Advanced Oracle Features。如果可以指定下列编码:为 Oracle 数据库指定 ZHS16GBK、为 NLS_LANG 指定 SIMPLIFIED CHINESE_CHINA.ZHS16GBK 以及为 weblogic.codeset 指定 MS936,则 Windows 平台上使用的字符集可以存储在 Oracle 数据库中。

    现在,无需使用 WebLogic Server 的连接池,即可使用 WebLogic Server jDriver for Oracle。例如,可以直接从 JDBC 客户端(如 JSP 或 Servlet)连接到数据库。有关当 JDBC 客户端使用 WebLogic Server jDriver for Oracle 时的编程信息,请参阅“Configuring and Using WebLogic jDriver for Oracle”中的 Connecting to an Oracle DBMS。

    如果使用连接池,需要在管理控制台中进行下列设置。有关如何设置连接池的详细信息,请参阅“Installing and Using WebLogic jDriver for Oracle”中“Installing WebLogic jDriver for Oracle”一章的 Setting Up a Connection Pools 部分。下面是设置样例。

  3. 管理控制台
    1. 设置连接属性。

      URL:
      jdbc:weblogic:oracle
      Driver Class Name:
      weblogic.jdbc.oci.Driver
      Properties:
      user=scott
      password=tiger
      server=ora81
      weblogic.codeset=MS936
    2. 选择要在目标中使用的服务器或群集。

  4. 重新启动 WebLogic Server。

现在即可使用 WebLogic Server jDriver for Oracle。

设置 Oracle Oci 驱动程序的使用环境

  1. 将下列更改添加到 startWebLogic.cmd 文件。
    1. 将下列内容添加到 CLASSPATH 环境变量:

      d:\oracle\ora81\jdbc\lib\classes12.zip;d:\oracle\ora81\jdbc\lib\nls_charset12.zip
    2. 将下列目录添加到 PATH 环境变量:

      c:\oracle\ora81\bin

    现在,无需使用 WebLogic Server 的连接池,即可使用 Oracle Oci 驱动程序。例如,可以直接从 JDBC 客户端(如 JSP 或 Servlet)连接到数据库。有关当 JDBC 客户端使用 Oracle Oci 驱动程序时的编程信息,请参阅 Oracle 文档。

    如果使用连接池,需要在管理控制台中进行下列设置。下面是设置样例。

  2. 在管理控制台中设置下列内容:
    1. 设置连接属性。

      URL:
      jdbc:oracle:oci8:@ora81
      Driver Class Name:
      oracle.jdbc.driver.OracleDriver
      Properties:
      user=scott
      password=tiger
    2. 选择要在目标中使用的服务器或群集。

  3. 重新启动 WebLogic Server。

现在即可使用 Oracle Oci 驱动程序。

设置 Oracle 瘦驱动程序的使用环境

对于瘦驱动程序,不需要指定 NLS_LANG 环境变量。

  1. 将下列更改添加到 startWebLogic.cmd 文件。
    1. 将下列内容添加到 CLASSPATH 环境变量:

      d:\oracle\ora81\jdbc\lib\classes12.zip;d:\oracle\ora81\jdbc\lib\nls_charset12.zip
    2. 将下列目录添加到 PATH 环境变量:

      c:\oracle\ora81\bin

    现在,无需使用 WebLogic Server 的连接池,即可使用 Oracle 瘦驱动程序。例如,可以直接从 JDBC 客户端(如 JSP 或 Servlet)连接到数据库。有关当 JDBC 客户端使用 Oracle 瘦驱动程序时的编程信息,请参阅 Oracle 文档。

    如果使用连接池,需要在管理控制台中进行下列设置。下面是设置样例。

  2. 在管理控制台中设置下列内容:
    1. 设置连接属性。

      URL:
      jdbc:oracle:thin:@jpsol1:1521:ora81
      Driver Class Name:
      oracle.jdbc.driver.OracleDriver
      Properties:
      user=scott
      password=tiger
    2. 选择要在目标中使用的服务器或群集。

  3. 重新启动 WebLogic Server。

现在即可使用 Oracle 瘦驱动程序。

同时连接到编码不同的数据库时的限制

使用 OCI 驱动程序时,必须为 NLS_LANG 和 weblogic.codeset 指定相同的编码。如果这些参数设置为相同的值,将在 Oracle 端执行编码转换,因为您是作为具有特定 NLS_LANG 的客户端连接到 Oracle 端的。如果两个参数相同,则无论数据库的编码如何,都能成功进行连接。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章