gpt4 book ai didi

java - 从 Mule 3.6.2 迁移到 3.8.2

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:14 24 4
gpt4 key购买 nike

我正在努力将现有应用程序从 3.6.2 升级到 3.8.2。配置更改后,REST 调用即可正常工作。但在运行 SOAP 调用流程时,在 StaxDataBinding.java 中出现 NullPointerException。服务返回 200,但最终流程失败,状态代码为 500。

Mule 3.6.2 的旧配置文件:

<flow name="testws-srr">
       <http:inbound-endpoint host="${app.host}" port="${app.port}" path="testWs" exchange-pattern="request-response" doc:name="HTTP">
          <cxf:proxy-service/>
       </http:inbound-endpoint>
       <msr:resolve-endpoint serviceName="TestService" basicAuthSupport="true"/>
       <http:outbound-endpoint ref="msr-resolvedEndpoint" exchange-pattern="request-response" responseTimeout="30000" doc:name="HTTP">
          <cxf:proxy-client/>
       </http:outbound-endpoint>
       <custom-exception-strategy class="com.mule.errorhandling.exception.CustomExceptionHandlingStrategy" doc:name="Custom Exception Strategy">
         <spring:property name="code" value="TA102" />
         <spring:property name="message" value="${error.TA102}"/>
      </custom-exception-strategy>
    </flow>

3.8.2 的 flows-config.xml:

<flow name="testws-srr">
      <http:listener config-ref="msr-listener-httpConnector" path="testWs" doc:name="HTTP"/>
      <cxf:proxy-service doc:name="CXF" />      
      <msr:resolve-endpoint serviceName="resultsService" basicAuthSupport="true" />      
      <cxf:proxy-client doc:name="CXF"/>      
      <sfhttp:request config-ref="msr-request-httpConnector" path="" method="POST" responseTimeout="15000" doc:name="HTTP">
         <http:success-status-code-validator values="200,500" />
      </http:request>
      <transformer ref="statusTransformer" />
      <custom-exception-strategy class="com.mule.errorhandling.exception.CustomExceptionHandlingStrategy" doc:name="Custom Exception Strategy">
         <spring:property name="code" value="TA102" />
         <spring:property name="message" value="${error.TA102}" />
      </custom-exception-strategy>
   </flow>

添加 cxf:proxy-service 标签时出现此错误 -

2017-09-25 10:39:42,844 logLevel="WARN" [[-auto-esb].msr-listener-httpConnector.worker.01] org.apache.cxf.phase.PhaseInterceptorChain: Interceptor for {http://support.cxf.module.mule.org/}ProxyService has thrown exception, unwinding now
java.lang.NullPointerException
at org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter.write(StaxDataBinding.java:147) ~[cxf-rt-core-2.7.18.jar:2.7.18]
at org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter.write(StaxDataBinding.java:135) ~[cxf-rt-core-2.7.18.jar:2.7.18]
at org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter.write(StaxDataBinding.java:131) ~[cxf-rt-core-2.7.18.jar:2.7.18]
at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:141) ~[cxf-api-2.7.18.jar:2.7.18]
at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) ~[cxf-api-2.7.18.jar:2.7.18]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) ~[cxf-api-2.7.18.jar:2.7.18]
at org.apache.cxf.phase.PhaseInterceptorChain.resume(PhaseInterceptorChain.java:242) ~[cxf-api-2.7.18.jar:2.7.18]
at org.mule.module.cxf.CxfInboundMessageProcessor$2.write(CxfInboundMessageProcessor.java:541) ~[mule-module-cxf-3.8.2.jar:3.8.2]
at org.mule.tranformer.simple.ObjectToByteArray.doTranform(ObjectToByteArray.java:63) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.tranformer.AbstractTranformer.tranform(AbstractTranformer.java:415) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:406) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:354) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.DefaultMuleMessage.getPayloadAsBytes(DefaultMuleMessage.java:741) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.module.http.internal.listener.HttpResponseBuilder.build(HttpResponseBuilder.java:208) ~[mule-module-http-3.8.2.jar:3.8.2]
at org.mule.module.http.internal.listener.HttpMessageProcessorTemplate.doBuildResponse(HttpMessageProcessorTemplate.java:122) ~[mule-module-http-3.8.2.jar:3.8.2]
at org.mule.module.http.internal.listener.HttpMessageProcessorTemplate.buildResponse(HttpMessageProcessorTemplate.java:112) ~[mule-module-http-3.8.2.jar:3.8.2]
at org.mule.module.http.internal.listener.HttpMessageProcessorTemplate.sendResponseToClient(HttpMessageProcessorTemplate.java:86) ~[mule-module-http-3.8.2.jar:3.8.2]
at org.mule.execution.AsyncResponseFlowProcessingPhase.runPhase(AsyncResponseFlowProcessingPhase.java:78) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.execution.AsyncResponseFlowProcessingPhase.runPhase(AsyncResponseFlowProcessingPhase.java:35) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.execution.PhaseExecutionEngine$InternalPhaseExecutionEngine.phaseSuccesfully(PhaseExecutionEngine.java:65) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.execution.PhaseExecutionEngine$InternalPhaseExecutionEngine.phaseSuccesfully(PhaseExecutionEngine.java:69) ~[mule-core-3.8.2.jar:3.8.2]
at com.mulesoft.mule.throttling.ThrottlingPhase.runPhase(ThrottlingPhase.java:187) ~[mule-module-throttling-ee-3.8.2.jar:3.8.2]
at com.mulesoft.mule.throttling.ThrottlingPhase.runPhase(ThrottlingPhase.java:58) ~[mule-module-throttling-ee-3.8.2.jar:3.8.2]
at org.mule.execution.PhaseExecutionEngine$InternalPhaseExecutionEngine.phaseSuccesfully(PhaseExecutionEngine.java:65) ~[mule-core-3.8.2.jar:3.8.2]
at com.mulesoft.gateway.http.phases.GatewayValidationPhase.runPhase(GatewayValidationPhase.java:93) ~[gateway-core-3.8.2.jar:3.8.2]
at com.mulesoft.gateway.http.phases.GatewayValidationPhase.runPhase(GatewayValidationPhase.java:49) ~[gateway-core-3.8.2.jar:3.8.2]
at org.mule.execution.PhaseExecutionEngine$InternalPhaseExecutionEngine.phaseSuccesfully(PhaseExecutionEngine.java:65) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.modules.cors.CorsPhase.runPhase(CorsPhase.java:113) ~[mule-module-cors-gw-3.8.2.jar:3.8.2]
at org.mule.modules.cors.CorsPhase.runPhase(CorsPhase.java:40) ~[mule-module-cors-gw-3.8.2.jar:3.8.2]
at org.mule.execution.PhaseExecutionEngine$InternalPhaseExecutionEngine.process(PhaseExecutionEngine.java:114) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.execution.PhaseExecutionEngine.process(PhaseExecutionEngine.java:41) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.execution.MuleMessageProcessingManager.processMessage(MuleMessageProcessingManager.java:32) ~[mule-core-3.8.2.jar:3.8.2]
at org.mule.module.http.internal.listener.DefaultHttpListener$1.handleRequest(DefaultHttpListener.java:133) ~[mule-module-http-3.8.2.jar:3.8.2]
at org.mule.module.http.internal.listener.grizzly.GrizzlyRequestDispatcherFilter.handleRead(GrizzlyRequestDispatcherFilter.java:83) ~[mule-module-http-3.8.2.jar:3.8.2]
at org.glasfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) ~[grizzly-framework-2.3.26.jar:2.3.26]
at org.glasfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) ~[grizzly-framework-2.3.26.jar:2.3.26]
at org.glasfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) ~[grizzly-framework-2.3.26.jar:2.3.26]
at org.glasfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) ~[grizzly-framework-2.3.26.jar:2.3.26]
at org.glasfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) ~[grizzly-framework-2.3.26.jar:2.3.26]
at org.glasfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) ~[grizzly-framework-2.3.26.jar:2.3.26]
at org.glasfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:526) ~[grizzly-framework-2.3.26.jar:2.3.26]
at org.glasfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) ~[grizzly-framework-2.3.26.jar:2.3.26]
at org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy.run0(ExecutorPerServerAddressIOStrategy.java:102) ~[mule-module-http-3.8.2.jar:3.8.2]
at org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy.access$100(ExecutorPerServerAddressIOStrategy.java:30) ~[mule-module-http-3.8.2.jar:3.8.2]
at org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy$WorkerThreadRunnable.run(ExecutorPerServerAddressIOStrategy.java:125) ~[mule-module-http-3.8.2.jar:3.8.2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_111]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_111]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]
2017-09-25 10:39:42,848 logLevel="DEBUG" [[-auto-esb].msr-listener-httpConnector.worker.01] org.mule.module.http.internal.HttpMessageLogger: LISTENER
HTTP/1.1 500
Content-Length: 0
Content-Type: text/xml; charset=UTF-8
Date: Mon, 25 Sep 2017 15:39:42 GMT
Connection: close

猜测这是否与多部分响应有关?

Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:7f7f18e7-44ab-44dc-bf18-33954bf602f9"; start="<root.message@cxf.apache.org>"; start-info="text/xml"

最佳答案

通过在 http 请求连接器中添加 parseResponse="false"并在 http 监听器中添加类似的 parseRequest="false"解决了这个问题。

Disabling HTTP Response Body Parsing: As with the HTTP Listener Connector, when HTTP responses have a content type of application/x-www-form-urlencoded or multipart/form-data, the HTTP Request Connector automatically carries out a parsing of the message. If you wish, you can disable this parsing functionality bydoing the following: •XML Editor: set the parseResponse attribute to false •Studio UI: Untick the Parse Response checkbox in the Advanced tab of the HTTP Request Connector

引用:https://docs.mulesoft.com/mule-user-guide/v/3.8/http-request-connector

关于java - 从 Mule 3.6.2 迁移到 3.8.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46457379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com