ミュール アプリケーションで Google オートコンプリートをシミュレートしたいと考えていました。ajax インバウンド エンドポイントを使用して、ブラウザーに入力されているテキスト (rpc 呼び出し) をキャプチャしています。フローの次のステップは、Google によって公開された URL への呼び出しを行うことです。 http://clients5.google.com/complete/search?client=ie8&q=##variable## 同じことを達成するために、ダイナミック HTTP アウトバウンド エンドポイントを使用しました。わかりやすくするために、最後にファイル送信エンドポイントを追加して、HTTP エンドポイントからの完全な応答を確認しました。
<ajax:connector name="AjaxConnectorForSpelling" serverUrl="http://localhost:8081/Ajax" resourceBase="src/main/app/docroot" jsonCommented="false" doc:name="AjaxConnectorForSpelling"/>
<http:connector name="HTTP_HTTPS" cookieSpec="netscape" validateConnections="true" sendBufferSize="0" receiveBufferSize="0" receiveBacklog="0" clientSoTimeout="10000" serverSoTimeout="10000" socketSoLinger="0" proxyHostname="bci****" proxyPort="8080" doc:name="HTTP\HTTPS"/>
<http:endpoint exchange-pattern="request-response" method="GET" name="httpgoogle" address="http://clients5.google.com/complete/search?client=ie8&q=#[header:INVOCATION:q]" connector-ref="HTTP_HTTPS" doc:name="HTTP"/>
<flow name="GoogleAutoComplete" doc:name="GoogleAutoComplete">
<ajax:inbound-endpoint channel="/services/echo" responseTimeout="10000" connector-ref="AjaxConnectorForSpelling" doc:name="Ajax Channel"/>
<message-properties-transformer doc:name="Message Properties" scope="invocation">
<add-message-property key="q" value="#[payload.get('q')]"/>
</message-properties-transformer>
<http:outbound-endpoint ref="httpgoogle" responseTransformer-refs="xml_to_json" doc:name="HTTP"/>
<file:outbound-endpoint path="C:\Documents and Settings\I300543\Desktop\proxyfiles\xslt" responseTimeout="10000" doc:name="File"/>
</flow>
Google から xml として応答を受け取り、JSON に変換され、ファイル エンドポイントはそれをファイル システムに書き込むことができます。しかし、私のajaxコネクタは失敗しています(アウトバウンドHTTPエンドポイントを静的にすると、上記の構成ですべてが正常に機能しますが、毎回同じ検索結果が得られます)、ブラウザに返される応答はありません.
この例外が発生しています。
Caused by: org.mule.api.MessagingException: Endpoint scheme must be compatible with the connector scheme. Connector is: "ajax", endpoint is "http://clients5.google.com/complete/search?client=ie8&q=ask" (java.lang.IllegalArgumentException). Message payload is of type: String
at org.mule.endpoint.AbstractEndpointBuilder.doBuildOutboundEndpoint(AbstractEndpointBuilder.java:254)
at org.mule.endpoint.AbstractEndpointBuilder.buildOutboundEndpoint(AbstractEndpointBuilder.java:122)
at org.mule.endpoint.DefaultEndpointFactory.getOutboundEndpoint(DefaultEndpointFactory.java:89)
at org.mule.transport.ajax.AjaxReplyToHandler.processReplyTo(AjaxReplyToHandler.java:66)
at org.mule.routing.requestreply.AbstractReplyToPropertyRequestReplyReplier.processReplyTo(AbstractReplyToPropertyRequestReplyReplier.java:69)
そのため、なぜ ajax コネクタが Http スキームの参照を取得しているのか混乱しています (動的エンドポイントの場合のみ)。ごく最近、Mule の作業を開始したばかりなので、すべてが正しく構成されているかどうかわかりません。