Mule正在抛出错误:在“上没有命名空间”;someElement“;要素

Mule正在抛出错误:在“上没有命名空间”;someElement“;要素,mule,Mule,我提供的代码片段应该可以正常工作,但它不能正常工作 简而言之,我的流程是由quartz触发的,从数据库读取一些数据,循环结果,在每个循环上做一些事情,然后完成 当服务的结果(http出站)返回并没有任何可返回的内容时,一切正常,但当选项(在流中)不是默认值时,它将重定向到xslt执行并保存文件的子流。文件按它应该的方式保存(如果xml符合标准,我使用外部工具检查),记录器打印出数字3作为它完成的证明(抛出错误之前有几行),但在这之后,我得到下面给出的错误。有人知道为什么吗?我没有主意了 我的流程

我提供的代码片段应该可以正常工作,但它不能正常工作

简而言之,我的流程是由quartz触发的,从数据库读取一些数据,循环结果,在每个循环上做一些事情,然后完成

当服务的结果(http出站)返回并没有任何可返回的内容时,一切正常,但当选项(在流中)不是默认值时,它将重定向到xslt执行并保存文件的子流。文件按它应该的方式保存(如果xml符合标准,我使用外部工具检查),记录器打印出数字3作为它完成的证明(抛出错误之前有几行),但在这之后,我得到下面给出的错误。有人知道为什么吗?我没有主意了

我的流程:

<flow name="msp2bassGettingContent" doc:name="Starter">
    <quartz:inbound-endpoint responseTimeout="10000" doc:name="Quartz" jobName="Starter" repeatInterval="600000" startDelay="3000">
        <quartz:event-generator-job groupName="Generator" jobGroupName="Generator">
            <quartz:payload file="${prop.requestEvent}"/>
        </quartz:event-generator-job>
    </quartz:inbound-endpoint>
    <jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="getUnreadedRoutes" queryTimeout="-1" connector-ref="JDBCConnector" doc:name="GetNulls">
        <jdbc:query key="getUnreadedRoutes" value="SELECT routeid FROM kptemp WHERE readed IS NULL"/>
    </jdbc:outbound-endpoint>
    <foreach collection="#[message.payload]" doc:name="For Each" counterVariableName="counter123">
        <flow-ref name="msp2bass" doc:name="Flow Reference"/>
    </foreach>
</flow>

<sub-flow name="msp2bass" doc:name="msp2bassGetEvent">
    <set-variable variableName="routeid" value="#[payload['routeid']]" doc:name="Variable"/>
    <set-payload value="<a/>;" doc:name="Set Payload"/>
    <mulexml:object-to-xml-transformer doc:name="Object to XML"/>
    <mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="${prop.createRequest}" doc:name="XSLT" ignoreBadInput="true">
        <mulexml:context-property key="customerId" value="${prop.customerId}"/>
        <mulexml:context-property key="siteName" value="${prop.siteName}"/>
        <mulexml:context-property key="routeID" value="#[routeid]"/>
    </mulexml:xslt-transformer>
    <cxf:proxy-client payload="body" doc:name="SOAP">
        <cxf:outInterceptors>
            <spring:ref bean="WSS4JOutInterceptorBean"/>
        </cxf:outInterceptors>
    </cxf:proxy-client>
    <https:outbound-endpoint exchange-pattern="request-response" host="${prop.host}" port="${prop.port}" path="${prop.path}" method="POST" connector-ref="HTTP_HTTPS1" doc:name="HTTP"/>
    <byte-array-to-object-transformer doc:name="Byte Array to Object"/>
    <choice doc:name="Choice">
        <when expression="#[xpath('boolean(//soap:Envelope/soap:Body/ns2:processComplexResponse/MSPResponse/serviceEvents/measurements/name)')]">
            <flow-ref name="transform" doc:name="Flow Reference"/>
        </when>
        <otherwise>
            <logger message="Not null: #[routeid]" level="INFO" doc:name="Logger"/>
        </otherwise>
    </choice>
</sub-flow>

<sub-flow name="transform" doc:name="transform">
    <logger message="Payload: #[payload]" level="INFO" doc:name="Logger"/>
    <mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="${prop.transformer}" doc:name="XSLT"/>
    <file:outbound-endpoint path="./work" outputPattern="#[routeid].xml" responseTimeout="10000" disableTransportTransformer="true" doc:name="File"/>
    <logger message="3" level="INFO" doc:name="3"/>
</sub-flow>
感谢您的帮助!谢谢大家!

编辑:1
我做了更多的研究,发现问题在于在循环的每一端调用子流的时间。我已经把logger放在flow ref之后,它打印ok直到那个错误(流末尾的文件生成了,但是logger是安静的)。那么,这是已知/未知的bug还是什么?或者我是否以某种方式重写了在这里循环的集合:message.payload,以便循环器无法读取下一个值?但是,为什么flow ref之后的记录器在循环结束时没有在内部触发?

cxf:proxy client元素是一个“双向”元素,即它在请求和响应阶段处理消息

“transform”子流使用XSL-T影响消息有效负载,即来自HTTP端点的响应。这会使
cxf:proxy client
元素在最终获得通过它的响应时产生混淆

一个潜在的修复方法是在
异步
块中引用子流,这样无论它将执行什么负载转换,调用流都不会看到,但这将改变“msp2bass”的响应


另一种选择是将
字节数组放到
对象转换器
选项
元素中
响应
cxf:proxy client
,这样您可以在CFX之后影响响应,使其停止抱怨。

我用async解决了它,但我认为更好的方法是byte[]>对象转换器,因为它可能导致大量结果集出现问题。事实上,当有很多结果集时,我已经得到了错误的结果,特别是当我进行了更耗时的操作时。谢谢你,大卫!
    INFO  2014-01-22 12:30:21,999 [[bass2msp].msp2bassGettingContent.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Not null: IR_1389972193818
INFO  2014-01-22 12:30:22,252 [[bass2msp].msp2bassGettingContent.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Payload: SOME XML CONTENT
INFO  2014-01-22 12:30:22,301 [[bass2msp].msp2bassGettingContent.stage1.02] org.mule.api.processor.LoggerMessageProcessor: 3
WARN  2014-01-22 12:17:56,335 [[bass2msp].msp2bassGettingContent.stage1.04] org.apache.cxf.phase.PhaseInterceptorChain: Interceptor for {http://support.cxf.module.mule.org/}ProxyService#{http://support.cxf.module.mule.org/}invoke has thrown exception, unwinding now
  org.apache.cxf.binding.soap.SoapFault: No namespace on "rootNode" element.
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.readVersion(ReadHeadersInterceptor.java:109)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:141)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
  at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:799)
  at org.mule.module.cxf.transport.MuleUniversalConduit.dispatchMuleMessage(MuleUniversalConduit.java:280)
  at org.mule.module.cxf.transport.MuleUniversalConduit$2.handleMessage(MuleUniversalConduit.java:194)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
  at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:533)
  at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
  at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:375)
  at org.mule.module.cxf.CxfOutboundMessageProcessor.doSendWithClient(CxfOutboundMessageProcessor.java:235)
  at org.mule.module.cxf.CxfOutboundMessageProcessor.process(CxfOutboundMessageProcessor.java:125)
  at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
  at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
  at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
  at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:95)
  at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:70)
  at org.mule.processor.chain.InterceptingChainLifecycleWrapper.doProcess(InterceptingChainLifecycleWrapper.java:54)
  at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:70)
  at org.mule.processor.chain.InterceptingChainLifecycleWrapper.access$001(InterceptingChainLifecycleWrapper.java:26)
  at org.mule.processor.chain.InterceptingChainLifecycleWrapper$1.process(InterceptingChainLifecycleWrapper.java:70)
  at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
  at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
  at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
  at org.mule.processor.chain.InterceptingChainLifecycleWrapper.process(InterceptingChainLifecycleWrapper.java:65)
  at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
  at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
  at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:106)
  at org.mule.routing.outbound.AbstractMessageSequenceSplitter.processParts(AbstractMessageSequenceSplitter.java:133)
  at org.mule.routing.outbound.AbstractMessageSequenceSplitter.process(AbstractMessageSequenceSplitter.java:63)
  at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
  at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
  at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
  at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:95)
  at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:70)
  at org.mule.processor.chain.InterceptingChainLifecycleWrapper.doProcess(InterceptingChainLifecycleWrapper.java:54)
  at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:70)
  at org.mule.processor.chain.InterceptingChainLifecycleWrapper.access$001(InterceptingChainLifecycleWrapper.java:26)
  at org.mule.processor.chain.InterceptingChainLifecycleWrapper$1.process(InterceptingChainLifecycleWrapper.java:70)
  at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
  at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
  at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
  at org.mule.processor.chain.InterceptingChainLifecycleWrapper.process(InterceptingChainLifecycleWrapper.java:65)
  at org.mule.routing.Foreach.process(Foreach.java:95)
  at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
  at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
  at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
  at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:95)
  at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:70)
  at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
  at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
  at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:106)
  at org.mule.interceptor.AbstractEnvelopeInterceptor.process(AbstractEnvelopeInterceptor.java:55)
  at org.mule.processor.AsyncInterceptingMessageProcessor.processNextTimed(AsyncInterceptingMessageProcessor.java:122)
  at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:192)
  at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:185)
  at org.mule.execution.ExecuteCallbackInterceptor.execute(ExecuteCallbackInterceptor.java:20)
  at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:34)
  at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:18)
  at org.mule.execution.BeginAndResolveTransactionInterceptor.execute(BeginAndResolveTransactionInterceptor.java:58)
  at org.mule.execution.ResolvePreviousTransactionInterceptor.execute(ResolvePreviousTransactionInterceptor.java:48)
  at org.mule.execution.SuspendXaTransactionInterceptor.execute(SuspendXaTransactionInterceptor.java:54)
  at org.mule.execution.ValidateTransactionalStateInterceptor.execute(ValidateTransactionalStateInterceptor.java:44)
  at org.mule.execution.IsolateCurrentTransactionInterceptor.execute(IsolateCurrentTransactionInterceptor.java:44)
  at org.mule.execution.ExternalTransactionInterceptor.execute(ExternalTransactionInterceptor.java:52)
  at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:32)
  at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:17)
  at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:113)
  at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:34)
  at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker.doRun(AsyncInterceptingMessageProcessor.java:184)
  at org.mule.work.AbstractMuleEventWork.run(AbstractMuleEventWork.java:43)
  at org.mule.work.WorkerContext.run(WorkerContext.java:311)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  at java.lang.Thread.run(Thread.java:679)
ERROR 2014-01-22 12:17:56,340 [[bass2msp].msp2bassGettingContent.stage1.04] org.mule.exception.DefaultMessagingExceptionStrategy: 
********************************************************************************
Message               : No namespace on "rootNode" element.. Failed to route event via endpoint: org.mule.module.cxf.CxfOutboundMessageProcessor. Message payload is of type: PostMethod
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. No namespace on "rootNode" element. (org.apache.cxf.binding.soap.SoapFault)
  org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor:109 (null)
2. No namespace on "rootNode" element.. Failed to route event via endpoint: org.mule.module.cxf.CxfOutboundMessageProcessor. Message payload is of type: PostMethod (org.mule.api.transport.DispatchException)
  org.mule.module.cxf.CxfOutboundMessageProcessor:144 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transport/DispatchException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
org.apache.cxf.binding.soap.SoapFault: No namespace on "rootNode" element.
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.readVersion(ReadHeadersInterceptor.java:109)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:141)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60)
  + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************