JSM が開始すると、system/AxisDefault.properties ファイル内の name の値エントリーが読み込まれ、スタティック・メソッド setProperty を使用する org.apache.axis.AxisProperties クラスに追加されます。

以下は AxisDefault.properties ファイルの例です。

#!<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 クライアント/サーバー構成

デフォルトでは、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.xml
axis.ServerConfigFile=system/axis-server-config.xml

Axis クライアント構成

<?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 サーバー構成

<?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 メッセージ・ハンドラー」を参照してください。

/*
    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 ) ;
  • No labels