ラップ時にMuleエンリッチャによって返されるデータ型は、非常に奇妙な動作を表示します。いくつかの状況ではResultSetIteratorを返し、それ以外のときにはListを返します。私は、唯一の違い、つまりここではサブフローであるフローで全く同じ構成を持っています。エンリッチャ内のデータベースコンポーネントがフロー内にある場合よりもサブフロー内にある場合、戻り値の型が異なる動作をしますか?ResultsetIteratorまたはList <Map <String、Object>を返すMule DBコンポーネント
<sub-flow name="process.customer">
<enricher target="#[variable:customers]"
doc:name="Customer Enrichment">
<db:select config-ref="MySQLConfig"
doc:name="Customer Query"
fetchSize="3000" streaming="true">
<db:parameterized-query><![CDATA[
SELECT * FROM CUSTOMER WHERE STATUS='ACTIVE'
]]></db:parameterized-query>
</db:select>
</enricher>
<custom-transformer class="com.gdc.transformer.CustomerTransformer" />
<vm:outbound-endpoint exchange-pattern="one-way"
public class CustomerTransformer extends AabstractMessageTransformer{
@Override
public Object transformMessage(MuleMessage message, String
outputEncoding) throws TransformerException {
//Throws ClassCastException i.e. cannot cast ResultSetIterator to
// LinkedList
List<Map<String,Object>> r=
message.getInvocationProperty("customers"));
....
}
}
ありがとう、本当にありがとう! – BreenDeen