Mule1.3アプリケーションをMule3.2.1(最新バージョン)にアップグレードしています。Mule 1.3構成ファイルには、いくつかの「mule-descriptor」サブ要素を持つ「model」要素があります。
<model name="theModel">
<mule-descriptor name="theName" implementation="com.company.SomeClass">
<inbound-router>
<endpoint address="servlet://service/foo" transformers="ACustomTransformer" responseTransformers="AnotherCustomTransformer" />
<endpoint address="vm://anEndpoint"/>
</inbound-router>
<outbound-router>
<router className="org.mule.routing.outbound.FilteringOutboundRouter">
<endpoint address="Authenticator">
<properties>
<property name="propName" value="propValue" />
</properties>
</endpoint>
<filter expression="/data = null" className="org.mule.routing.filters.xml.JXPathFilter" />
</router>
<router className="org.mule.routing.outbound.OutboundPassThroughRouter">
<endpoint address="RequestValidator" />
</router>
</outbound-router>
<properties>
<property name="someProp" value="someValue" />
</properties>
</mule-descriptor>
<!-- more <mule-descriptor> elements -->
</model>
これをMule3に相当するものに変換するにはどうすればよいですか?ありがとう。
編集-2012年5月29日
1)一部のラバ記述子には、自分自身を指すインバウンドルーターがあります。
<mule-descriptor name="theName" implementation="com.company.SomeClass">
<inbound-router>
<endpoint address="theName" />
</inbound-router>
</mule-descriptor>
これらをMule3フローにどのように変換する必要がありますか?回答の情報を使用してこれらをフローに変換すると、起動時にエラーメッセージが表示されます。これは、フローがまだ作成されているため(循環依存のように)、フローを参照できないことを示しているようです。
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ref:RequestValidator.20': Cannot resolve reference to bean 'RequestValidator' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'RequestValidator': Cannot create inner bean '(inner bean)' of type [org.mule.config.spring.factories.InboundEndpointFactoryBean] while setting bean property 'messageSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': 1 constructor arguments specified but no matching constructor found in bean '(inner bean)' (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)
2) 1つのmule記述子は、BridgeComponent
MuleAPIのクラスを実装として使用します。これらはどのように処理する必要がありますか?このクラスはMule3には存在しません。
<mule-descriptor name="theName" implementation="org.mule.components.simple.BridgeComponent">
<inbound-router>
<endpoint address="vm://theInboundAddress" />
</inbound-router>
<outbound-router>
<router className="org.mule.routing.outbound.FilteringOutboundRouter">
<endpoint address="vm://theOutboundAddress" />
</router>
</outbound-router>
</mule-descriptor>
3)別のラバ記述子の要素に「matchAll」属性があり<outbound-router>
ます。これをMule3フローにどのように変換する必要がありますか?
<mule-descriptor name="theName" implementation="com.company.SomeClass">
<inbound-router>
<endpoint address="servlet://theInboundEndpoint" />
</inbound-router>
<outbound-router matchAll="true">
<router className="org.mule.routing.outbound.OutboundPassThroughRouter">
<endpoint address="firstOutboundEndpoint" />
</router>
<router className="org.mule.routing.outbound.FilteringOutboundRouter" transformer="MyTransformer">
<endpoint address="vm://secondOutboundEndpoint" />
<filter pattern="Error*" className="org.mule.routing.filters.WildcardFilter" />
</router>
</outbound-router>
</mule-descriptor>
4) Mule 1.x構成には、いくつかの要素<endpoint-identifier>
の名前と同じ名前の<mule-descriptor>
要素がいくつかあります。これらの名前は、のエンドポイントアドレスとしても使用されます<mule-descriptor>
。例えば:
<endpoint-identifiers>
<endpoint-identifier name="TheEndpointName" value="vm://theEndpointAddress" />
</endpoint-identifiers>
...
<model name="...">
<mule-descriptor name="TheEndpointName" implementation="...">
<inbound-router>
<endpoint address="TheEndpointName" />
</inbound-router>
...
</mule-descriptor>
...
</model>
私の推測では、Mule3に相当するものは次のコードのようになります。これは正しいです?
<flow name="TheEndpointName">
<!--
My first guess was:
<inbound-endpoint ref="TheEndpointName" />
-->
<vm:inbound-endpoint path="theEndpointAddress" />
...
</flow>
ありがとうございました。
2012年5月30日編集
5)一部のミュール記述子はMuleAPIのRestServiceWrapper
クラスを使用します。これをMule3に変換すると、次の<flow>
エラーが発生します。
The required object/property 'serviceUrl' is null
Mule 1.x構成のmule-descriptorが「urlFromMessage」というプロパティを設定していることに気付きました。これは、XML構成ファイルで提供されるURLの代わりに、Muleにプロパティとして提供されることを示しているようです。メッセージ。ただし、「urlFromMessage」プロパティは、Mule3のバージョンのRestServiceWrapper
クラスには存在しません。Mule 3で別のコンポーネントクラスを使用する必要がありますか?このクラスはMuleAPIの一部なので、代わりに使用する必要がある標準のXMLタグはありますか?ありがとう。
<mule-descriptor name="theName" implementation="org.mule.components.rest.RestServiceWrapper">
<inbound-router>
...
</inbound-router>
<properties>
<property name="urlFromMessage" value="true" />
</properties>
</mule-descriptor>