[英]NameResolvingRequestBuilder$RotateIpListFactory error when calling external rest URL from a mule flow
我在下面寫了調用另一個外部 rest URL“ http://localhost:7070/rest/products ”的流程參考。 外部 URL 返回產品列表,其服務器已啟動並正在運行。
但是當我通過 mule 流調用 URL 時,我收到以下異常:
java.lang.ClassNotFoundException:com.mulesoft.service.http.impl.service.client.builder.NameResolvingRequestBuilder$RotateFactory 我在最后提供了完整的錯誤日志。 請幫忙。
<http:request-config name="HTTP_Request_configuration" doc:name="HTTP Request configuration" doc:id="0b9778e7-201b-4cbf-9c2b-551f47044bd4" basePath="/rest" >
<http:request-connection host="localhost" port="7070" />
</http:request-config>
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="c29e17c2-66e2-4685-bdd6-ee80245f63a8" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="mainflow" doc:id="4b8f4f18-f462-4bc3-bc20-ddee90d86dbd" >
<http:listener doc:name="Listener" doc:id="5458e296-cc0d-4d58-921a-c35483cfb838" config-ref="HTTP_Listener_config" path="/products"/>
<flow-ref doc:name="Flow Reference" doc:id="4e2a1241-5ffe-4167-adec-a7e2412d0a59" name="config-resr-callFlow"/>
</flow>
<flow name="config-resr-callFlow" doc:id="e004e7f3-f231-4c55-b95c-72dd6fd2c05e" >
<http:request method="GET" doc:name="Request" doc:id="78e7368c-316a-4cbc-9f34-3cb9de0f4dcc" config-ref="HTTP_Request_configuration" path="/products"/>
</flow>
錯誤日志:
ERROR 2019-09-23 06:54:34,399 [[MuleRuntime].cpuLight.16: [rest-consumer].config-resr-callFlow.CPU_LITE @e96cb7f] [event: cfedad70-ddb5-11e9-b57d-3c9180706ae0] org.mule.runtime.core.internal.exception.OnCriticalErrorHandler:
********************************************************************************
Message : com/mulesoft/service/http/impl/service/client/builder/NameResolvingRequestBuilder$RotateIpListFactory.
Element : config-resr-callFlow/processors/0 @ rest-consumer:config-resr-call.xml:18 (Request)
Element XML : <http:request method="GET" doc:name="Request" doc:id="78e7368c-316a-4cbc-9f34-3cb9de0f4dcc" config-ref="HTTP_Request_configuration" path="/products"></http:request>
Error type : MULE:CRITICAL
Payload Type : org.mule.runtime.core.internal.streaming.bytes.ManagedCursorStreamProvider
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.ClassNotFoundException: com.mulesoft.service.http.impl.service.client.builder.NameResolvingRequestBuilder$RotateIpListFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at org.mule.runtime.module.artifact.api.classloader.FineGrainedControlClassLoader.findLocalClass(FineGrainedControlClassLoader.java:171)
at org.mule.runtime.module.artifact.api.classloader.FineGrainedControlClassLoader.loadClass(FineGrainedControlClassLoader.java:88)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.mulesoft.service.http.impl.service.client.builder.NameResolvingRequestBuilder.nextResolvedAddresses(NameResolvingRequestBuilder.java:99)
at com.mulesoft.service.http.impl.service.client.builder.NameResolvingRequestBuilder.setUri(NameResolvingRequestBuilder.java:78)
at com.mulesoft.service.http.impl.service.client.builder.NameResolvingRequestBuilder.setUri(NameResolvingRequestBuilder.java:32)
at org.mule.service.http.impl.service.client.GrizzlyHttpClient.createGrizzlyRequest(GrizzlyHttpClient.java:418)
at org.mule.service.http.impl.service.client.GrizzlyHttpClient.sendAsync(GrizzlyHttpClient.java:352)
at com.mulesoft.service.http.impl.service.client.EEGrizzlyHttpClient.sendAsync(EEGrizzlyHttpClient.java:140)
at org.mule.runtime.http.api.client.HttpClient.sendAsync(HttpClient.java:106)
at org.mule.extension.http.internal.request.HttpRequesterConnectionManager$ShareableHttpClient.sendAsync(HttpRequesterConnectionManager.java:104)
at org.mule.extension.http.internal.request.client.HttpExtensionClient.send(HttpExtensionClient.java:72)
at org.mule.extension.http.internal.request.HttpRequester.doRequestWithRetry(HttpRequester.java:124)
at org.mule.extension.http.internal.request.HttpRequester.doRequest(HttpRequester.java:103)
at org.mule.extension.http.internal.request.HttpRequestOperations.request(HttpRequestOperations.java:131)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:282)
at org.mule.runtime.module.extension.internal.runtime.execution.ReflectiveMethodComponentExecutor.lambda$execute$1(ReflectiveMethodComponentExecutor.java:80)
at org.mule.runtime.core.api.util.ExceptionUtils.tryExpecting(ExceptionUtils.java:227)
at org.mule.runtime.core.api.util.ClassUtils.withContextClassLoader(ClassUtils.java:915)
at org.mule.runtime.core.api.util.ClassUtils.withContextClassLoader(ClassUtils.java:879)
at org.mule.runtime.module.extension.internal.runtime.execution.ReflectiveMethodComponentExecutor.execute(ReflectiveMethodComponentExecutor.java:79)
at org.mule.runtime.module.extension.internal.runtime.operation.ReflectiveMethodOperationExecutor.execute(ReflectiveMethodOperationExecutor.java:64)
at org.mule.runtime.module.extension.internal.runtime.execution.ReactiveOperationExecutionWrapper.lambda$execute$0(ReactiveOperationExecutionWrapper.java:65)
at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:53)
at reactor.core.publisher.MonoMap.subscribe(MonoMap.java:52)
at reactor.core.publisher.MonoPeekTerminal.subscribe(MonoPeekTerminal.java:61)
at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)
at reactor.core.publisher.Mono.subscribe(Mono.java:3694)
at reactor.core.publisher.Mono.subscribeWith(Mono.java:3800)
at reactor.core.publisher.Mono.subscribe(Mono.java:3688)
at reactor.core.publisher.Mono.subscribe(Mono.java:3655)
at reactor.core.publisher.Mono.subscribe(Mono.java:3627)
at org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.lambda$executeWithInterceptors$9(DefaultExecutionMediator.java:159)
at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:53)
at reactor.core.publisher.MonoPeekTerminal.subscribe(MonoPeekTerminal.java:61)
at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)
at reactor.core.publisher.MonoMap.subscribe(MonoMap.java:55)
at reactor.core.publisher.MonoSwitchIfEmpty.subscribe(MonoSwitchIfEmpty.java:44)
at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)
at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)
at reactor.core.publisher.Mono.subscribe(Mono.java:3694)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmit(FluxFlatMap.java:501)
at reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:943)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121)
at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2070)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:162)
at reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:933)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90)
at reactor.core.publisher.MonoCurrentContext.subscribe(MonoCurrentContext.java:35)
at reactor.core.publisher.MonoMapFuseable.subscribe(MonoMapFuseable.java:59)
at reactor.core.publisher.Mono.subscribe(Mono.java:3694)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)
at org.mule.runtime.core.privileged.processor.chain.AbstractMessageProcessorChain$1.onNext(AbstractMessageProcessorChain.java:292)
at org.mule.runtime.core.privileged.processor.chain.AbstractMessageProcessorChain$1.onNext(AbstractMessageProcessorChain.java:285)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204)
at org.mule.runtime.core.privileged.processor.chain.AbstractMessageProcessorChain$1.onNext(AbstractMessageProcessorChain.java:292)
at org.mule.runtime.core.privileged.processor.chain.AbstractMessageProcessorChain$1.onNext(AbstractMessageProcessorChain.java:285)
at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onNext(FluxHide.java:127)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204)
at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:398)
at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:484)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.mule.service.scheduler.internal.AbstractRunnableFutureDecorator.doRun(AbstractRunnableFutureDecorator.java:111)
at org.mule.service.scheduler.internal.RunnableFutureDecorator.run(RunnableFutureDecorator.java:54)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
我不明白你的動機,但這就是我所做的。
我創建了一個名為 products 的 mule 項目,定義了 HTTP 配置以在端口 7070 上運行,這將返回一個虛擬有效負載。
我創建了另一個名為 productsconsumer 的項目,它在端口 8081 上運行,有兩個流程。 第一個流使用流引用調用子流,子流本身調用 localhost:7070/rest/products,我能夠測試這種組合。
然而,問題是為什么要定義一個子流來調用外部托管的 API? 我相信您上面提到的兩個流程是兩個不同的 mule 應用程序的一部分。
答案#2:
所以我創建了一個非常基本的 Java 應用程序,它在端口 9090 上運行,返回一個虛擬用戶
現在我有一個在端口 8081 上運行的帶有端點 /user/get 的 mule 應用程序,如您所見,它調用了一個子流,其中有一個 HTTP 偵聽器
調用路徑 /user 上端口 9090 上運行的任何東西
我得到了相同的 output ,我正在運行 java 應用程序
現在,既然我已經確定這是可行的...如果您需要進一步的幫助,您能否將您的 mule flow xml 文件發送給我?
問題似乎是企業和社區功能混合在一起。 堆棧跟蹤顯示 Mule 調用企業版中提供的 EEGrizzlyHttpClient class。 社區版將使用 GrizzlyHttpClient class 代替。 可能在安裝中混合了一些服務。 如果您查看目錄 MULE_HOME/services 並看到目錄mule-service-http-ee-1.4.3
那么它是 HTTP 服務的企業安裝(注意“ee”部分)。 該錯誤表明 Mule 正在嘗試使用,但它是社區版。 我建議安裝一個全新的 Mule 發行版以確保它是干凈的。
此外,建議在您的應用中使用最新版本的 HTTP 連接器。 查看發布說明頁面頂部的最新版本,並在項目的 pom.xml 文件中更新版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.