wso2 DSS 3.5.1 postgresql отображение ввода / вывода завершается неудачно при обращении к службе
У нас есть сервисы вставки / обновления / поиска, построенные на базе данных PostgreSQL.
Все работает, кроме службы обновления. Похоже, проблема связана с одним или обоими целочисленными сопоставлениями входных данных. Наш тип поля таблицы установлен как int4
для этих целочисленных входных параметров здесь.
Я пробовал несколько вещей. Это работает только если мы используем axis2.json.JSONMessageFormatter
, Это работает, но это не разрешено в качестве зависимости в моем проекте.
Если бы кто-то мог указать на какую-то подсказку, это было бы очень полезно!
запись в файле dbs:
<data ..
<query id="updateSessionQueryV1" useConfig="postgres_cfg">
<sql>select sqrystat, sql_err, isam_err, sql_info from update_session_v1(:in_mob, :in_active, :in_errcount, :in_data::jsonb)</sql>
<param name="in_mobile" ordinal="1" paramType="SCALAR" sqlType="STRING" structType="varchar(10)" type="IN"/>
<param name="in_active" ordinal="2" paramType="SCALAR" sqlType="INTEGER" structType="integer" type="IN"/>
<param name="in_errorcount" ordinal="3" paramType="SCALAR" sqlType="INTEGER" structType="integer" type="IN"/>
<param name="in_data" ordinal="4" paramType="SCALAR" sqlType="STRING" structType="jsonb" type="IN"/>
<result outputType="json">{"results":{"result":[{"sqrystat":"$sqrystat","sql_err":"$sql_err(type:integer)","isam_err":"$isam_err(type:integer)","sql_info":"$sql_info"}]}}</result>
</query>
<resource method="POST" path="v1/session/update">
<call-query href="updateSessionQueryV1">
<with-param column="in_mob" name="in_mob"/>
<with-param column="in_active" name="in_active"/>
<with-param column="in_errcount" name="in_errorcount"/>
<with-param column="in_data" name="in_data"/>
</call-query>
</resource>
Тестовый ввод JSON:
{"_postv1_session_update":{"in_mob":"4025556777","in_active":2,"in_errCount":3,"in_data":"{}"}}
Stacktrace в консоли сервера:
2017-10-25 15:41:19,389] ERROR {org.apache.catalina.core.StandardWrapperValve} - Servlet.service() for servlet [bridgeservlet] in context with path [/] threw exception
java.lang.IllegalArgumentException: Value type miss match, Expected value type - '', but found - 'NUMBER'
at org.apache.axis2.json.gson.GsonXMLStreamReader.nextValue(GsonXMLStreamReader.java:737)
at org.apache.axis2.json.gson.GsonXMLStreamReader.readValue(GsonXMLStreamReader.java:626)
at org.apache.axis2.json.gson.GsonXMLStreamReader.stateTransition(GsonXMLStreamReader.java:532)
at org.apache.axis2.json.gson.GsonXMLStreamReader.next(GsonXMLStreamReader.java:178)
at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
at org.apache.axiom.om.impl.llom.OMSerializableImpl.build(OMSerializableImpl.java:78)