ナビゲーションをスキップ

WebLogic Web サービス プログラマーズ ガイド

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

インターナショナライゼーション

WebLogic Server アプリケーションのインターナショナライズについての一般的な情報は、『インターナショナライゼーション ガイド』を参照してください。この章では、WebLogic Web サービスのインターナショナライゼーションに固有の追加情報について説明します。

 


インターナショナライゼーションの概要

インターナショナライゼーションとは、さまざまな地域で適切に動作するようにソフトウェアを準備することです。WebLogic Web サービスのインターナショナライゼーションでは、主に SOAP リクエストおよび SOAP 応答の文字セットを指定します。SOAP リクエストの文字セットは、Web サービスを呼び出すクライアント アプリケーションの内部で指定します。WebLogic Server がその SOAP 応答で使用する文字セットは、この章の後の節で説明するとおり、さまざまな方法で指定できます。WebLogic Server は、デプロイされた WebLogic Web サービスの呼び出しに使用される SOAP リクエストで多くの文字セットを受け入れることもできます。

通常は、WebLogic Server が使用するデフォルトの文字セットで十分なので、Web サービスに文字セットを明示的に指定する必要はありません。たとえば、クライアント アプリケーションに希望の文字セットが指定され、Web サービスに対しては文字セットが指定されていない場合、WebLogic Server はクライアントで指定された文字セットを使用して応答します。また、インターナショナライズされていない WebLogic Server インスタンスはデフォルトで US-ASCII 文字セットを使用し、インターナショナライズされた WebLogic Server インスタンスはデフォルトで UTF-8 文字セットを使用しますが、どちらの文字セットも、WebLogic Server インスタンスがお互いに通信するときに互換性があります。つまり、インターナショナライズされていない WebLogic Server インスタンスで動作する Web サービスは、マルチバイト文字を正しく扱うことができます。

ただし、デフォルトの文字セットが使用するアプリケーションに適さない場合、この章の情報に基づいて必要な文字セットを指定します。

 


WebLogic Web サービスのインターナショナライゼーション

この節では、WebLogic Web サービスの文字セットを設定する方法について説明します。デプロイされた Web サービスの呼び出しに対する SOAP 応答メッセージを送信するときに使用する文字セットを、WebLogic Server がどのように決定するのかについても説明します。

WebLogic Web サービスの文字セットを指定する

WebLogic Web サービスの文字セットを指定するには、デプロイされた Web サービスの呼び出しに対する SOAP 応答メッセージの Content-Type HTTP ヘッダの値を指定します。次の 2 種類のうちのいずれかの方法で、WebLogic Web サービスの文字セットを指定できます。

web-services.xml ファイルを更新する

特定の WebLogic Web サービスが使用する文字セットを指定するには、web-serivces.xml ファイルを更新する方法が便利です。

WebLogic Web サービスの文字セットを指定するには、web-services.xml ファイルで <web-service> 要素の charset 属性を更新します。この属性を、次のサンプルに示すように、文字セットの標準名に設定します。

<web-services>
<web-service name="stockquotes"
targetNamespace="http://example.com"
uri="/myStockQuoteService"
charset="Shift_JIS">
...
     </web-service>
</web-services>

デフォルト値は US-ASCII

文字セットの詳細なリストについては、「http://www.iana.org/assignments/character-sets」を参照してください。

この属性を設定すると、WebLogic Web サービスでは、Web サービスの任意のオペレーションの呼び出しに対する SOAP 応答で、常に指定された文字セットが使用されます。

WebLogic Server システム プロパティを設定する

システム プロパティ weblogic.webservice.i18n.charset に文字セット名を設定することによって、WebLogic Server インスタンスにデプロイされるすべての WebLogic Web サービスの文字セットを指定できます。WebLogic Server インスタンスを起動するスクリプトで、次のようにこのシステム プロパティを設定します。

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

WebLogic Server が使用する文字セット コンフィグレーションの優先順位

次のリストは、オペレーションの呼び出しに対して SOAP 応答を作成するときに、WebLogic Server が WebLogic Web サービスの文字セットを決定するときの順序を示します。

  1. web-services.xml デプロイメント記述子の対応する <web-service> 要素の charset 属性の値。
  2. 設定されていない場合は、次の値が検索されます。

  3. Web サービス オペレーションを呼び出したクライアント アプリケーションによって指定された文字セット。クライアント アプリケーションが WebLogic Web サービス クライアント API を使用する場合は、weblogic.webservice.binding.BindingInfo.setAcceptCharset() メソッドを使用して文字セットが指定されます。
  4. 設定されていない場合は、次の値が検索されます。

  5. WebLogic Server システム プロパティ weblogic.webservice.i18n.charset の値。
  6. 設定されていない場合は、次の値が検索されます。

  7. JVM に対して指定された文字セット。特に、JVM プロパティ user.languageen に設定すると、WebLogic Web サービスは US-ASCII 文字セットを使用します。user.language プロパティをそれ以外の値に設定すると、WebLogic Web サービスは UTF-8 文字セットを使用します。

 


特定の文字セットを使用した Web サービスの呼び出し

この節では、デフォルト以外の文字セットを使用して Web サービスを呼び出すための WebLogic Web サービス API の使用方法について説明します。また、WebLogic Web サービスが受け付ける HTTP リクエスト ヘッダの文字セット設定についても説明します。

Web サービス呼び出し時の文字セットの設定

WebLogic Web サービス クライアント API を使用して Web サービスを呼び出す場合、weblogic.webservice.binding.BindingInfo.setCharset() を使用してクライアント アプリケーションの SOAP リクエストの文字セットを設定します。特に、このメソッドは Content-Type HTTP ヘッダを設定します。このメソッドは、クライアント アプリケーションから Web サービスに渡されるデータの文字セットのみを設定します。Web サービスからの SOAP 応答ではまったく異なる文字セットが使用される場合があります。WebLogic Web サービスからの SOAP 応答の文字セットの決定方法については、「WebLogic Server が使用する文字セット コンフィグレーションの優先順位」を参照してください。

クライアント アプリケーションは、weblogic.webservice.binding.BindingInfo.setAcceptCharset() メソッドを使用して、Web サービスの応答で使用される文字セットを指定できます。特に、このメソッドは Accept-Charset HTTP ヘッダを設定します。

次のコードは、Web サービス オペレーション呼び出し時の文字セットの設定方法、および応答で選択される文字セットの指定方法を示します。この例で、stub は Web サービスに対する JAX-RPC Stub クラスのインスタンスです。

import weblogic.webservice.binding.BindingInfo;
...
    BindingInfo info =
(BindingInfo)stub._getProperty("weblogic.webservice.bindinginfo" );
    // 次のメソッドは Content-Type HTTP ヘッダを設定
info.setCharset( "UTF-8" );
port.helloWorld();
    // 次のメソッドは Accept-Charset HTTP ヘッダを設定
info.setAcceptCharset( "UTF-16" );
port.helloWorld();

weblogic.webservice.binding パッケージの詳細については、「Javadoc」を参照してください。

警告 :weblogic.webservice.binding パッケージは、独自の WebLogic API です。クライアント アプリケーションで使用すると、WebLogic 以外の環境への移行が難しくなります。

WebLogic Web サービスによって受け付けられた HTTP リクエスト ヘッダでの文字セット設定

WebLogic Web サービスは、そのオペレーションを呼び出す HTTP SOAP リクエストを受け取る場合、次のように HTTP ヘッダを受け付けます。

次の HTTP ヘッダを含む SOAP エンベロープで、3 通りの文字セットの指定方法を太字で示します。

POST /StockQuote HTTP/1.1
Host: www.sample.com
Content-Type: text/xml; charset="US-ASCII"
Content-Length: nnnn
SOAPAction: "Some-URI"
Accept-Charset: UTF-8
<?xml version="1.0" encoding="UTF-16"?>
<SOAP-ENV:Envelope
...
</SOAP-ENV:Envelope>

 

フッタのナビゲーションのスキップ  ページの先頭 前 次