2.15 Axisプロパティ

LANSA Integrator

2.15 Axisプロパティ


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

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

 

#!<studio-project id="20000000-000000" name="lansa">

# Axisの省略値のプロパティ

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 Reference Guide

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エージェントウィザードは、生成されたサービス・コードに以下のコードを入れることで、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エージェントのサービス・コードにコードを含めることで、SOAP要求にSOAPヘッダーを挿入できます。SOAPエージェントウィザードでサービス・コードを生成すると、ファイルAGENT_INCLUDE.TXTの内容が生成されたコードに含まれます。

また、メッセージ・ハンドラーを使用してメッセージにSOAPヘッダーを追加することもできます。「SOAPエージェントメッセージ・ハンドラー」を参照してください。

 

/*

    SOAPヘッダーを追加する

*/

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 ) ;