第185章 XmlRpc


XmlRpc Component

Camel 2.11 から利用可能
このコンポーネントは、xml の dataformat を提供します。これにより、Apache XmlRpc のバインドデータ形式を使用した要求メッセージおよび応答メッセージのシリアライズおよびデシリアライズが可能になります。camel-xmlrpc プロデューサーを介して XMLRPC サービスを呼び出すこともできます。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-xmlrpc</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

XmlRpc Overview

これは、異なるオペレーティングシステム上でソフトウェアを実行できる 仕様 および実装セットで、インターネットを介してプロシージャーコールを行う異なる環境で実行されます。
HTTP をトランスポートとして使用し、XML をエンコーディングとして使用してリモートプロシージャーを呼び出します。XML-RPC は可能な限りシンプルになるように設計されていますが、複雑なデータ構造を送信、処理、および返すことができます。
一般的な XML-RPC 要求の例を以下に示します。
<?xml version="1.0"?>
<methodCall>
  <methodName>examples.getStateName</methodName>
  <params>
    <param>
        <value><i4>40</i4></value>
    </param>
  </params>
</methodCall>
Copy to Clipboard Toggle word wrap
一般的な XML-RPC 応答の例を以下に示します。
<?xml version="1.0"?>
<methodResponse>
  <params>
    <param>
        <value><string>South Dakota</string></value>
    </param>
  </params>
</methodResponse>
Copy to Clipboard Toggle word wrap
一般的な XML-RPC 障害は次のとおりです。
<?xml version="1.0"?>
<methodResponse>
  <fault>
    <value>
      <struct>
        <member>
          <name>faultCode</name>
          <value><int>4</int></value>
        </member>
        <member>
          <name>faultString</name>
          <value><string>Too many parameters.</string></value>
        </member>
      </struct>
    </value>
  </fault>
</methodResponse>
Copy to Clipboard Toggle word wrap

URI 形式

xmlrpc://serverUri[?options]
Copy to Clipboard Toggle word wrap

オプション

Expand
プロパティー デフォルト 説明
basicEncoding null Basic 認証のエンコーディングを設定します。null は UTF-8 が選択されることを意味します。
basicUserName null Basic 認証のユーザー名。
basicPassword null Basic 認証のパスワード。
clientConfigurer null XmlRpcClientConfigurer のインターフェイスを実装して XmlRpcClientConfigurer をユーザー希望として設定する XmlRpcClient アドバイザーの参照 ID。値は #myConfigurer のように # で始まる必要があります。
connectionTimeout 0 接続タイムアウトをミリ秒単位で設定します。0 は無効にすることです。
contentLengthOptional false Content-Length ヘッダーを省略するかどうか。XML-RPC 仕様では、このようなヘッダーが存在することが要求されます。
enabledForExceptions false エラーの発生時に応答に faultCause 要素が含まれるべきかどうか。faultCause は例外で、サーバーがシリアライズ可能なオブジェクトとしてバイトストリームにトラップおよび書き込んだものです。
enabledForExtensions false エクステンションが有効であるかどうか。デフォルトでは、クライアントまたはサーバーは XML-RPC 仕様に厳密に準拠し、拡張機能は無効になっています。
encoding null リクエストエンコーディングを設定します。null は UTF-8 が選択されることを意味します。
gzipCompressing false 要求の送信に gzip 圧縮が使用されているかどうか。
gzipRequesting false 要求の送信に gzip 圧縮が使用されているかどうか。
replyTimeout 0 応答タイムアウトをミリ秒単位で設定します。0 は無効にします。
userAgent null xmlrpc 要求の実行時に設定する http ユーザーエージェントヘッダー

メッセージヘッダー

Camel XmlRpc はこれらのヘッダーを使用します。
Expand
ヘッダー 説明
CamelXmlRpcMethodName XmlRpc サーバーの呼び出しに使用する XmlRpc メソッド名。

XmlRpc データフォーマットの使用

XmlRpc メッセージはリクエストまたは応答になる可能性があるため、XmlRpcDataFormat を使用する場合は request に dataformat is を指定する必要があります。
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

    <!-- we define the xml rpc data formats to be used -->
    <dataFormats>
        <xmlrpc id="xmlrpcRequest" request="true"/>
        <xmlrpc id="xmlrpcResponse" request="false"/>
    </dataFormats>

    <route>
        <from uri="direct:request"/>
        <marshal ref="xmlrpcRequest"/>
        <unmarshal>
           <xmlrpc request="true"/>
        </unmarshal>
        <to uri="mock:request" />
    </route>

    <route>
        <from uri="direct:response"/>
        <marshal>
            <xmlrpc request="false"/>
        </marshal>
        <unmarshal ref="xmlrpcResponse"/>
        <to uri="mock:response" />
    </route>
</camelContext>
Copy to Clipboard Toggle word wrap

クライアントからの XmlRpc サービスの呼び出し

XmlRpc サービスを呼び出すには、メッセージヘッダーに methodName を指定し、パラメーターを以下のコードのようにメッセージボディーに配置する必要があります。障害メッセージが返された場合は、XmlRpcException が発生する例外が発生するはずです。
   String response = template.requestBodyAndHeader(xmlRpcServiceAddress, new Object[]{"me"}, XmlRpcConstants.METHOD_NAME, "hello", String.class);
Copy to Clipboard Toggle word wrap

Java コードで XmlRpcClient を設定する方法

camel-xmlrpc は、コンポーネントによって使用される XmlRpcClientClient を設定するためのプラグ可能なストラテジーを提供し、ユーザーは XmlRpcClientConfigurer インターフェイスを実装するだけで、XmlRpcClient を必要に応じて設定できます。clientConfigure インスタンスの参照は、uri オプション clientConfigure を使用して設定できます。
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

public class MyClientConfigurer implements XmlRpcClientConfigurer {

    @Override
    public void configureXmlRpcClient(XmlRpcClient client) {
        // get the configure first
        XmlRpcClientConfigImpl clientConfig = (XmlRpcClientConfigImpl)client.getClientConfig();
        // change the value of clientConfig
        clientConfig.setEnabledForExtensions(true);
        // set the option on the XmlRpcClient
        client.setMaxThreads(10);
    }

}
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat