【发布时间】:2014-06-26 19:50:05
【问题描述】:
我正在使用 Mule 3.5 Anypoint 连接器,并且已从选择查询转移到批处理范围组件中的存储过程。随着这种变化,骡子不喜欢存储过程返回的对象类型。
这是我返回的错误:
ERROR 2014-06-26 15:15:00,426 [pool-15-thread-1] org.mule.exception.DefaultMessagingExceptionStrategy:
********************************************************************************
Message : Object "java.util.HashMap" not of correct type. It must be of type "{interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection}" (java.lang.IllegalArgumentException)
Code : MULE_ERROR--2
--------------------------------------------------------------------------------
使用存储过程从数据库连接器返回的对象类型如下:
java.util.HashMap
使用Select 语句(有效),类型如下:
org.mule.util.CaseInsensitiveHashMap
就像上面所说的 select 语句,这确实有效。
关于系统的一些额外信息:
- 是SQL Server 2008 R2
-
数据库连接器在存储过程中工作正常,但在到达进程记录部分时出错
<batch:job name="ons-esb-mainBatch1"> <batch:threading-profile poolExhaustedAction="WAIT"/> <batch:input> <poll doc:name="Poll"> <fixed-frequency-scheduler frequency="15" timeUnit="SECONDS"/> <db:stored-procedure config-ref="Generic_Database_Configuration" doc:name="Database"> <db:parameterized-query><![CDATA[{ CALL otis.GetEntityQueueByTime() }]]></db:parameterized-query> </db:stored-procedure> </poll> <logger level="INFO" doc:name="Logger"/> </batch:input> <batch:process-records> <batch:step name="Batch_Step"> <choice doc:name="Choice"> <!-- Choice Selector Logic -- Taken Out to Save Space --!> </choice> </batch:step> </batch:process-records> <batch:on-complete> <logger message="EntityQueues Completed Queueing into ActiveMQ" level="INFO" doc:name="Logger"/> </batch:on-complete>
总结
我想找到一种方法,让通过批处理过程处理的对象将像 select 语句一样工作。
【问题讨论】:
标签: stored-procedures sql-server-2008-r2 hashmap mule batch-processing