Jaxb Mule集合拆分器引发异常:CopyOnWriteArrayList无法强制转换为java.lang.String

Jaxb Mule集合拆分器引发异常:CopyOnWriteArrayList无法强制转换为java.lang.String,jaxb,mule,jaxb2,mule-studio,Jaxb,Mule,Jaxb2,Mule Studio,这里,我的java组件返回了一个arrylist,我正在使用集合拆分器拆分它,并对列表对象进行连线。 但有一次,当我改变我原来的工资时,它就不起作用了。我得到了一个班级演员例外 CopyOnWriteArrayList无法强制转换为java.lang.String。我认为拆分的对象在流的末尾聚合,而不使用任何额外的 聚合器,我不明白为什么我不能通过设置有效负载转换器获得更改的有效负载 下面是流源代码- <flow name="StandaloneTestFlow1" doc:name="S

这里,我的java组件返回了一个arrylist,我正在使用集合拆分器拆分它,并对列表对象进行连线。 但有一次,当我改变我原来的工资时,它就不起作用了。我得到了一个班级演员例外 CopyOnWriteArrayList无法强制转换为java.lang.String。我认为拆分的对象在流的末尾聚合,而不使用任何额外的 聚合器,我不明白为什么我不能通过设置有效负载转换器获得更改的有效负载

下面是流源代码-

<flow name="StandaloneTestFlow1" doc:name="StandaloneTestFlow1">
        <http:inbound-endpoint exchange-pattern="request-response"   doc:name="HTTP" address="http://0.0.0.0:10114/jaxbtest"/>
        <cxf:jaxws-service serviceClass="com.standalone.test.StandaloneTest" doc:name="SOAP"/>
        <component doc:name="Java">
            <method-entry-point-resolver>
                <include-entry-point method="getxmlString"/>
            </method-entry-point-resolver>  
            <spring-object bean="standalonBean"/>
        </component>
        <collection-splitter doc:name="Collection Splitter"/>
        <mulexml:jaxb-object-to-xml-transformer name="autoBeanToSmartxml" jaxbContext-ref="testJaxbContext"/>
        <object-to-string-transformer doc:name="Object to String"/>
        <wire-tap>
            <vm:outbound-endpoint address="vm://testJaxbvm"/>
        </wire-tap>
        <set-payload value="adfafasdfasdfasd " doc:name="Set Payload"/>
 </flow>

Mule的
收集拆分器是导致此问题的原因

收集拆分器
将收集对象拆分为单个对象,并将每个对象传递到
剩余流的下一部分,每次传递一个
。它就像是
迭代集合
并在迭代循环中执行流的剩余部分

这里是HTTP
请求-响应
入站。因此,在集合拆分器拆分集合并根据集合的大小多次执行剩余流之后。最终响应由mule聚合,并作为响应返回。但是由于它是
JAXWS
服务,方法签名可能返回了一个字符串。因此存在一个类强制转换异常

所以有两个选择

Either changes the  return type of the method to CopyOnWriteArraylist  which provied with an output like
<response>
 <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
 </response>
下面是有关集合拆分器的更多信息


请张贴完整的文件堆。另外,请提高您的声誉:有许多问题您还没有接受答案。我在之前添加了收集聚合器,它工作正常。我在这里了解到的是收集拆分器一直在一个接一个地发送收集对象,直到流结束。。因此,在对有效负载执行操作或任何其他操作之前,我们还必须聚合对象。
Either changes the  return type of the method to CopyOnWriteArraylist  which provied with an output like
<response>
 <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
     <greeting>adfafasdfasdfasd</greeting>
 </response>
Change the logic to avoid using collection splitter.