WSO2 APIM 3.2.0 Dashboard启动报feign.RetryableException异常如何解决
WSO2 APIM 3.2.0 Dashboard重定向异常解决方案
异常触发原因
- 该异常的核心是Feign客户端向APIM的DCR(动态客户端注册)接口发起POST请求时,收到了3xx重定向响应,而POST属于非幂等请求,Feign默认在流传输模式下不会自动跟随重定向,也不允许重试,因此直接抛出
feign.RetryableException。 - 你的场景下触发重定向的常见原因:
- 配置的
kmDcrUrl使用IP地址访问APIM,而WSO2 APIM默认开启了主机名校验,当请求的Host头和APIM配置的主机名不一致时,会自动触发重定向到默认主机名对应的地址。 - APIM端的SSL证书没有被Dashboard信任,SSL握手过程触发了重定向跳转。
- 配置的
修复步骤
1. 处理主机名重定向问题
两种方案二选一即可:
- 方案A:使用APIM的主机名访问(推荐)
- 先在Dashboard所在服务器的hosts文件中添加APIM节点的主机名映射,格式如下:
172.25.129.66 <你的APIM节点主机名,默认是localhost>- 修改Dashboard配置文件,把所有
https://172.25.129.66:9443开头的地址替换为https://<APIM主机名>:9443,比如kmDcrUrl修改为https://<APIM主机名>:9443/client-registration/v0.16/register。
- 方案B:关闭APIM的主机名校验(测试环境用)
打开APIM节点的<APIM_HOME>/repository/conf/deployment.toml文件,添加如下配置后重启APIM:[transport.https] enable_hostname_validation = false [transport.http] enable_hostname_validation = false
2. 配置Feign支持重定向与SSL信任
编辑Dashboard的启动脚本,Windows系统修改<DASHBOARD_HOME>/bin/dashboard.bat,Linux系统修改<DASHBOARD_HOME>/bin/dashboard.sh,在JAVA_OPTS环境变量中追加以下参数:
# 导入APIM的信任证书,生产环境建议正式签发证书替换自签名证书 -Djavax.net.ssl.trustStore=<DASHBOARD_HOME>/resources/security/client-truststore.jks -Djavax.net.ssl.trustStorePassword=wso2carbon # 允许Feign自动跟随POST请求重定向 -Dfeign.httpclient.follow-redirects=true
3. 重启Dashboard服务
保存所有配置修改后,重启Dashboard服务即可验证异常是否消失。
内容的提问来源于stack exchange,提问作者Tohid Makari
相关产品推荐
相关产品推荐

