簡體   English   中英

從騾子流中調用外部 rest URL 時出現 NameResolvingRequestBuilder$RotateIpListFactory 錯誤

[英]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 應用程序的一部分。

請注意,Flow Ref 將 Mule 事件路由到另一個流或子流並返回到同一個 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM