第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>
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>
一般的な XML-RPC 応答の例を以下に示します。
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
一般的な 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>
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
xmlrpc://serverUri[?options]
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
| プロパティー | デフォルト | 説明 |
|---|---|---|
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 はこれらのヘッダーを使用します。
| ヘッダー | 説明 |
|---|---|
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>
クライアントからの XmlRpc サービスの呼び出し リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
XmlRpc サービスを呼び出すには、メッセージヘッダーに methodName を指定し、パラメーターを以下のコードのようにメッセージボディーに配置する必要があります。障害メッセージが返された場合は、XmlRpcException が発生する例外が発生するはずです。
String response = template.requestBodyAndHeader(xmlRpcServiceAddress, new Object[]{"me"}, XmlRpcConstants.METHOD_NAME, "hello", String.class);
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);
}
}