WSO2 Integrator报错:无法定位指定WSDL构建代理服务
自定义WSDL配置key属性取值说明
问题场景
代理服务配置自定义WSDL时,初始配置如下,持续抛出WSDL找不到的错误:
<publishWSDL key="conf:sample_proxy_wsdl1.wsdl" preservePolicy="true"/>
对应报错信息:
Caused by: org.apache.synapse.SynapseException: Couldn't build the proxy service : HttpToJms. Unable to locate the specified WSDL to build the service at org.apache.synapse.core.axis2.ProxyService.handleException(ProxyService.java:978) at org.apache.synapse.core.axis2.ProxyService.buildAxisService(ProxyService.java:622) at org.apache.synapse.deployers.ProxyServiceDeployer.deploySynapseArtifact(ProxyServiceDeployer.java:84) ... 73 more
查看注册表资源编辑器后,将配置修改为如下内容,仍报相同错误:
<publishWSDL key="conf:/_system/governance/endpoints/sample_proxy_wsdl1.wsdl" preservePolicy="true"/>
相关注册表界面参考:
注册表资源编辑器截图
错误原因
两次配置失败核心是混淆了注册表路径前缀的映射规则:
conf:前缀固定映射注册表的/_system/config根目录gov:前缀固定映射注册表的/_system/governance根目录
- 首次配置的
conf:sample_proxy_wsdl1.wsdl,实际指向路径为/_system/config/sample_proxy_wsdl1.wsdl,与WSDL实际存放的governance目录完全不匹配 - 二次配置虽然写了governance下的全路径,但仍使用
conf:前缀,最终拼接出的路径为/_system/config/_system/governance/endpoints/sample_proxy_wsdl1.wsdl,属于不存在的路径,无法定位到目标文件
正确配置方式
按照WSDL实际存放位置(governance库下的endpoints目录),key属性选择以下任意一种写法即可:
- 前缀简写方式:
<publishWSDL key="gov:endpoints/sample_proxy_wsdl1.wsdl" preservePolicy="true"/>
- 全路径写法(无需加任何前缀):
<publishWSDL key="/_system/governance/endpoints/sample_proxy_wsdl1.wsdl" preservePolicy="true"/>
配置前可提前校验两点:确认注册表中该WSDL文件开放可读权限,文件上传完整无损坏、路径层级无错误。
内容的提问来源于stack exchange,提问作者viggnah
相关产品推荐
相关产品推荐

