WSO2AM报message mediation data type error错误如何解决
错误原因
你遇到的报错核心是WSO2 Synapse属性中介器的类型转换规则限制:get-property('SYSTEM_TIME')默认返回字符串格式的时间戳,向registry作用域写入属性时,系统无法自动将字符串格式的时间戳转换为LONG类型,因此抛出如下错误:
Unknown type : LONG for the property mediator or the property value cannot be converted into the specified type.
解决方案
你可以根据业务场景选择以下任意一种方案解决问题:
- 方案1:保留数值类型存储
通过XPath的number()函数显式将时间戳转换为数值类型后再写入,调整后的配置如下:
该方案写入注册表的是长整型数值,后续读取时可直接作为数值进行运算、对比等操作。<property name="gov:/oauth_endpoint/generated_time" expression="number(get-property('SYSTEM_TIME'))" scope="registry" type="LONG" /> - 方案2:以字符串格式存储
直接移除配置中的type="LONG"属性,属性中介器会默认以字符串格式将时间戳写入注册表,后续使用时按需转换类型即可,调整后的配置如下:
该方案兼容性最高,不会出现类型转换类报错,适合不需要直接对存储的时间戳做数值操作的场景。<property name="gov:/oauth_endpoint/generated_time" expression="get-property('SYSTEM_TIME')" scope="registry" />
内容的提问来源于stack exchange,提问作者mohammad amin rahimi
相关产品推荐
相关产品推荐

