Page History
...
JSM が開始すると、system/AxisDefault.properties ファイル内の name の値エントリーが読み込まれ、スタティック・メソッド setProperty を使用する org.apache.axis.AxisProperties クラスに追加されます。
以下は AxisDefault.properties ファイルの例です。
| Code Block |
|---|
#!<studio-project id="20000000-000000" |
...
name="lansa"> |
...
# # Axis default properties # axis.ClientConfigFile=system/axis-client-config.xml |
...
axis.ServerConfigFile=system/axis-server-config.xml |
...
# # |
...
axis.http.client.maximum.total.connections |
...
# axis.http.client.maximum.connections.per.host |
...
# axis.http.client.connection.pool.timeout |
...
# axis.http.client.connection.default.so.timeout |
...
# axis.http.client.connection.default.connection.timeout |
...
# axis.socketFactory |
...
# axis.socketSecureFactory |
...
# axis.ServerFactory |
...
# http.proxyHost |
...
# http.proxyPort |
...
# http.proxyUser |
...
# http.proxyPassword |
...
# http.nonProxyHosts |
...
# https.proxyHost |
...
# https.proxyPort |
...
# https.proxyUser |
...
# https.proxyPassword |
...
# https.nonProxyHosts |
...
# |
...
#!</studio-project> |
...
Axis グローバル構成
Axis クライアント/サーバー構成
デフォルトでは、Axis はクライアント/サーバー構成用に jsmaxis.jar ファイルの org/apache/axis/client/client-config.wsdd ファイルと org/apache/axis/server/server-config.wsdd ファイルを使用します。
AxisDefault.properties のエントリー axis.ClientConfigFile および axis.ServerConfigFile は、異なる構成ファイルを使用するように Axis に指示します。
axis.ClientConfigFile=system/axis-client-config.xmlaxis.ServerConfigFile=system/axis-server-config.xml
...
Axis クライアント構成
| Code Block |
|---|
<?xml version="1.0" encoding="utf-8"?> |
...
...
<deployment name="defaultClientConfiguration" xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> |
...
...
<globalConfiguration> |
...
<parameter name="disablePrettyXML" value="true"/> |
...
<parameter name="addressing.sendReplyTo" value="true"/> |
...
<parameter name="enableNamespacePrefixOptimization" value="false"/> |
...
</globalConfiguration> |
...
...
<transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/> |
...
...
</deployment> |
...
Axis サーバー構成
| Code Block |
|---|
<?xml version="1.0" encoding="utf-8"?> |
...
...
<deployment name="defaultServerConfiguration" xmlns="http://xml.apache.org/axis/wsdd/"> |
...
...
<globalConfiguration> |
...
<parameter name="sendMultiRefs" value="false"/> |
...
<parameter name="dotNetSoapEncFix" value="true"/> |
...
<parameter name="disablePrettyXML" value="true"/> |
...
<parameter name="enableNamespacePrefixOptimization" value="false"/> |
...
</globalConfiguration> |
...
...
</deployment> |
...
SOAP サーバー応答での MultiRef エンコーディングの無効化
Axisサーバー構成では、グローバルなsendMulitRefsパラメータを使用することにより、RPC/エンコードされた応答でのmultiRefの送信を無効にすることができます。
<parameter name="sendMultiRefs" value="false"/>
Axis での共通 HTTP クライアントの使用
デフォルトでは、Apache Axis 1.4はHTTP送信にorg.apache.axis.transport.http.HTTPSenderを使用します。
このデフォルト設定を、org.apache.commons.httpclientを使用するように変更できます。
構成内のtransport pivot属性を、CommonsHTTPSenderクラスを指し示すように変更します。
<transport name="http" pivot="java:org.apache.axis.transport.http.CommonsHTTPSender"/>
また、common.codec.1.3.jarとcommon-httpclient-3.0-rc4.jarをjarディレクトリに追加する必要があります。
http://jakarta.apache.org/commons/
...
http://jakarta.apache.org/commons/httpclient/
...
http://jakarta.apache.org/commons/httpclient/features
...
http://jakarta.apache.org/commons/httpclient/logging
...
http://jakarta.apache.org/site/downloads/downloads_commons
...
JSMDirect サーバーで共通 HTTP クライアントを使用する場合の問題
デフォルトでは、共通HTTPクライアントはHTTPプロトコル1.1を使用し、デフォルトでチャンク形式転送エンコーディングを使用します。
HTTPクライアント・プログラムがチャンク形式転送エンコーディングを送信する場合、内容の長さを送信することはできません。
JSMDirectは内容の長さを要求するため、HTTPクライアント・プログラムはSTDINを読み込みJSMに送信することができます。
そのため、JSM SOAPサーバー・サービスではSOAPメッセージ内容を受信しません。
SOAP Agentウィザードは、生成されたサービス・コードに以下のコードを入れることで、HTTPクライアント・プログラムに対してHTTP 1.0プロトコルを強制的に使用させることができます。
stub._setProperty ( org.apache.axis.MessageContext.HTTP_TRANSPORT_VERSION , org.apache.axis.transport.http.HTTPConstants.HEADER_PROTOCOL_V10 ) ;
SOAP 要求への SOAP ヘッダーの挿入
生成されたSOAP Agentのサービス・コードにコードを含めることで、SOAP要求にSOAPヘッダーを挿入できます。SOAP Agentウィザードでサービス・コードを生成すると、ファイルAGENT_INCLUDE.TXTの内容が生成されたコードに含まれます。
...
また、メッセージ・ハンドラーを使用してメッセージにSOAPヘッダーを追加することもできます。詳細は、「2.17 SOAP Agent
...
メッセージ・ハンドラー」を参照してください。
| Code Block |
|---|
/* |
...
Add SOAP header |
...
*/ |
...
org.apache.axis.message.SOAPHeaderElement elementHead = new org.apache.axis.message.SOAPHeaderElement ( "namespace", "AuthHeader" ) ; |
...
...
javax.xml.soap.SOAPElement elementUserToken = elementHead.addChildElement ( "UserToken" ) ; |
...
...
javax.xml.soap.SOAPElement elementUserName = elementUserToken.addChildElement ( "UserName" ) ; |
...
elementUserName.addTextNode ( "username" ) ; |
...
...
javax.xml.soap.SOAPElement elementPassword = elementUserToken.addChildElement ( "Password" ) ; |
...
elementPassword.addTextNode ( "password" ) ; |
...
...
stub.setHeader ( elementHead ) ; |
...