WSO2 EI 6.5.0租户名称验证错误返回SOAP,如何转为JSON?
WSO2 EI租户无效时返回JSON错误的配置方案及错误来源说明
错误来源组件
该错误由**WSO2 Enterprise Integrator的租户管理组件(Tenant Management Component)**返回。在租户上下文初始化阶段,系统无法识别传入的租户域名时,底层租户验证逻辑默认输出SOAP格式的错误响应,这是组件原生的错误输出规则导致的。
配置返回JSON格式错误的步骤
1. 调整Axis2的消息处理器优先级
找到EI安装目录下的repository/conf/axis2/axis2.xml,修改messageFormatter和messageBuilder配置段,确保JSON处理器优先级高于SOAP处理器:
- 确认并调整
messageFormatter配置位置到段首:<messageFormatter contentType="application/json" class="org.apache.axis2.json.JSONMessageFormatter"/> - 确认并调整
messageBuilder配置位置到段首:<messageBuilder contentType="application/json" class="org.apache.axis2.json.JSONOMBuilder"/>
2. 添加JSON错误转换拦截器
在axis2.xml的fault阶段添加自定义拦截器,强制将SOAP错误转为JSON格式:
<phase name="fault"> <handler name="JSONFaultHandler" class="org.apache.synapse.handlers.json.JSONFaultHandler"> <order phase="fault"/> </handler> </phase>
该拦截器会在错误响应阶段自动匹配请求的Accept头,将SOAP格式错误转换为JSON格式。
3. 修改租户管理组件的错误输出格式
打开repository/conf/tenant-mgt.xml,在TenantManager配置中添加errorResponseFormat属性:
<TenantManager class="org.wso2.carbon.tenant.core.TenantManagerImpl"> <Property name="errorResponseFormat">json</Property> </TenantManager>
此配置会让租户管理组件直接输出JSON格式的错误响应,从根源改变错误输出规则。
4. 重启WSO2 EI服务
所有配置修改完成后,必须重启EI服务才能使配置生效。
内容的提问来源于stack exchange,提问作者user666
相关产品推荐
相关产品推荐

