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 サービスの文字セットを設定する方法について説明します。デプロイされた Web サービスの呼び出しに対する SOAP 応答メッセージを送信するときに使用する文字セットを、WebLogic Server がどのように決定するのかについても説明します。
WebLogic Web サービスの文字セットを指定するには、デプロイされた Web サービスの呼び出しに対する SOAP 応答メッセージの Content-Type
HTTP ヘッダの値を指定します。次の 2 種類のうちのいずれかの方法で、WebLogic Web サービスの文字セットを指定できます。
web-services.xml
デプロイメント記述子ファイルを更新する。weblogic.webservice.i18n.charset
を設定する。 特定の 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>
文字セットの詳細なリストについては、「http://www.iana.org/assignments/character-sets」を参照してください。
この属性を設定すると、WebLogic Web サービスでは、Web サービスの任意のオペレーションの呼び出しに対する SOAP 応答で、常に指定された文字セットが使用されます。
システム プロパティ weblogic.webservice.i18n.charset
に文字セット名を設定することによって、WebLogic Server インスタンスにデプロイされるすべての WebLogic Web サービスの文字セットを指定できます。WebLogic Server インスタンスを起動するスクリプトで、次のようにこのシステム プロパティを設定します。
-Dweblogic.webservice.i18n.charset=utf-8
次のリストは、オペレーションの呼び出しに対して SOAP 応答を作成するときに、WebLogic Server が WebLogic Web サービスの文字セットを決定するときの順序を示します。
この節では、デフォルト以外の文字セットを使用して Web サービスを呼び出すための WebLogic Web サービス API の使用方法について説明します。また、WebLogic Web サービスが受け付ける HTTP リクエスト ヘッダの文字セット設定についても説明します。
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 SOAP リクエストを受け取る場合、次のように HTTP ヘッダを受け付けます。
Content-Type
HTTP ヘッダの charset
属性を受け付ける。これは、SOAP リクエストの文字セットを指定します。Accept-Charset
HTTP ヘッダを受け付けることがある。このヘッダは、Web サービス オペレーションを呼び出したアプリケーションによって選択された SOAP 応答の文字セットを指定します。WebLogic Web サービスが特定の文字セットでコンフィグレーションされていない場合 (「WebLogic Web サービスの文字セットを指定する」を参照)、SOAP 応答は、Accept-Charset
HTTP ヘッダで指定された文字セットを使用します。ただし、WebLogic Web サービスが特定の文字セットを使用するようにコンフィグレーションされている場合は、SOAP 応答では常にその文字セットが使用されます。 <?xml?>
要素の encoding
属性を受け付けない。注意 :これは、SOAP 1.1 の場合のみです。SOAP 1.2 では、ContentType
HTTP ヘッダがない場合、<?xml?>
要素の encoding
属性が受け付けられます。
次の 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>
![]() ![]() |
![]() |
![]() |