Сбой проверки посредника WSO2 esb - PullRequest
0 голосов
/ 22 ноября 2018

Я следовал документации WSO2 о том, как проверять запросы json.Я реализовал, как это объяснено, и когда я пробую его, используя неправильное тело json, приложение вылетает со следующей ошибкой вместо выполнения моего кода фабрики полезной нагрузки.что мне не хватает?

ОШИБКА:

ERROR - StkPushAPI Error creating a new schema objects for schemas : [Value {name ='null', keyValue ='conf:schema/processCheckoutSchema.json'}]
org.xml.sax.SAXParseException: Content is not allowed in prolog.
    at org.apache.xerces.jaxp.validation.Util.toSAXParseException(Unknown Source)
    at org.apache.xerces.jaxp.validation.Util.toSAXException(Unknown Source)
    at org.apache.xerces.jaxp.validation.XMLSchemaFactory.newSchema(Unknown Source)
    at org.apache.synapse.mediators.builtin.ValidateMediator.mediate(ValidateMediator.java:428)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:108)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:70)
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
    at org.apache.synapse.rest.Resource.process(Resource.java:351)
    at org.apache.synapse.rest.API.process(API.java:399)
    at org.apache.synapse.rest.RESTRequestHandler.apiProcess(RESTRequestHandler.java:135)
    at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:113)
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:71)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:303)
    at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:92)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:337)
    at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:383)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:151)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

вот мой конфиг:

> <validate cache-schema="true">
>                 <schema key="conf:schema/processCheckoutSchema.json"/>
>                 <resource key="conf:schema/processCheckoutSchema.json" location="default_location"/>
>                 <on-fail>
>                     <payloadFactory description="failureResponse" media-type="json">
>                         <format>{"message":"JSON validation failed"}</format>
>                         <args/>
>                     </payloadFactory>
>                     <respond description="failureResponse"/>
>                 </on-fail>
>             </validate>

1 Ответ

0 голосов
/ 27 ноября 2018

Я быстро попробовал ваш код, и он, кажется, хорошо работает с несколькими изменениями:

  • вам не нужен <resource key=../>.Это требуется только в том случае, если схема ссылается на другую схему.
  • убедитесь, что тип схемы json - «application / json».
...