WSO2微集成器部署Twilio连接器报错NoSuchMethodError求解决方案
解决WSO2 Micro Integrator部署Twilio Connector时的NoSuchMethodError问题
问题描述
在WSO2中使用Twilio Connector,将.car文件部署到Micro Integrator运行时出现以下报错,但在Integration Studio自带的嵌入式服务器上运行该连接器一切正常。
报错日志
[2022-10-07 15:31:24,320] ERROR {NativeWorkerPool} - Uncaught exception java.lang.NoSuchMethodError: org.apache.http.impl.client.DefaultRedirectStrategy.<init>([Ljava/lang/String;)V at com.twilio.http.HttpClient.<init>(HttpClient.java:35) at com.twilio.http.NetworkHttpClient.<init>(NetworkHttpClient.java:54) at com.twilio.http.NetworkHttpClient.<init>(NetworkHttpClient.java:45) at com.twilio.http.NetworkHttpClient.<init>(NetworkHttpClient.java:36) at com.twilio.http.TwilioRestClient$Builder.build(TwilioRestClient.java:143) at com.twilio.Twilio.buildRestClient(Twilio.java:202) at com.twilio.Twilio.getRestClient(Twilio.java:174) at com.twilio.base.Creator.create(Creator.java:40) at org.wso2.carbon.connector.twilio.sms.SendSms.connect(SendSms.java:67) at org.wso2.carbon.connector.core.AbstractConnector.mediate(AbstractConnector.java:32) at org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:94) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) at org.apache.synapse.mediators.template.TemplateMediator.mediate(TemplateMediator.java:134) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:169) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:92) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158) at org.apache.synapse.rest.Resource.process(Resource.java:331) at org.apache.synapse.rest.API.process(API.java:448) at org.apache.synapse.rest.RESTRequestHandler.apiProcess(RESTRequestHandler.java:120) at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:98) at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:71) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:331) at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:99) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:367) at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:426) at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:181) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)
原因分析
该错误由不兼容的org.apache.httpcomponents.httpclient运行时版本导致,所需依赖配置如下:
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.12</version> </dependency>
解决方案
步骤1:添加依赖到Micro Integrator
- 找到Micro Integrator的安装目录,进入
<MI_HOME>/repository/components/lib文件夹 - 下载
httpclient-4.5.12.jar文件,将其复制到该lib目录下
步骤2:清理旧版本依赖(可选)
- 检查
<MI_HOME>/repository/components/lib目录中是否存在旧版本的httpclient-xxx.jar(xxx为低于4.5.12的版本),若存在则删除该文件,避免版本冲突
步骤3:重启Micro Integrator
- 停止当前运行的Micro Integrator服务,重新启动,使新依赖生效
步骤4:重新部署验证
- 将Twilio Connector的.car文件重新部署到Micro Integrator,测试连接器功能是否正常
内容的提问来源于stack exchange,提问作者Ayub Jamal
相关产品推荐
相关产品推荐

