WSO2 APIM:mc.setPayloadJSON 抛出 org.mozilla.javascript.WrappedException
WSO2 APIM:mc.setPayloadJSON throwing org.mozilla.javascript.WrappedException
我正在尝试使用 Javascript 在 WSO2 APIM 中操纵 JSON 请求并将其作为 application/json 发送。我修改了 axis2.xml & axis2_blocking_client.xml 以包括 JsonStreamFormatter 和 JsonStreamBuilder。设置 mc.setPayloadJSON 时得到 org.mozilla.javascript.WrappedException。
以下是代码片段和错误日志:
API snippet(carbon.xml):
<api context="/TestVDB/v1.0" name="creator--testVDB" version="v1.0" version-type="context">
<resource faultSequence="fault" methods="POST" url-mapping="/VcVDB">
<inSequence>
<filter regex="PRODUCTION" source="$ctx:AM_KEY_TYPE">
<then>
<property action="remove"
name="REST_URL_POSTFIX" scope="axis2"/>
<property expression="json-eval($.)" name="JSONPayload"/>
<log level="custom">
<property
expression="get-property('JSONPayload')" name="requestJson"/>
</log>
<property name="action" value="SUBMIT"/>
<script language="js"><![CDATA[var requestJson=mc.getProperty('JSONPayload');
var requestJsonObject=JSON.parse(requestJson);
var requestJsonString=JSON.stringify(requestJsonObject);
var VDBJsonObj = new Object();
VDBJsonObj.inputJsonReq=requestJsonString;
newResponseJson=JSON.stringify(VDBJsonObj);
print(newResponseJson);
mc.setPayloadJSON(newResponseJson);]]></script>
<property name="HTTP_METHOD" scope="axis2"
type="STRING" value="POST"/>
<property name="messageType" scope="axis2" value="application/json"/>
<property
expression="get-property('SYSTEM_TIME')" name="api.ut.backendRequestTime"/>
<send>
<endpoint name="creator--testVDB_APIproductionEndpoint_0">
<http uri-template="{var.uri.host}.{var.uri.port}/FpuVDB/CallRouterView/json/CallRequestRouter"/>
</endpoint>
</send>
</then>
<else>
<sequence key="_sandbox_key_error_"/>
</else>
</filter>
</inSequence>
<outSequence>
<class name="org.wso2.carbon.apimgt.usage.publisher.APIMgtResponseHandler"/>
<send/>
</outSequence>
</resource>
<handlers>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler">
<property name="apiImplementationType" value="ENDPOINT"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler"/>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.throttling.APIThrottleHandler">
<property name="id" value="A"/>
<property name="policyKeyResource" value="gov:/apimgt/applicationdata/res-tiers.xml"/>
<property name="policyKey" value="gov:/apimgt/applicationdata/tiers.xml"/>
<property name="policyKeyApplication" value="gov:/apimgt/applicationdata/app-tiers.xml"/>
</handler>
<handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageHandler"/>
<handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtGoogleAnalyticsTrackingHandler">
<property name="configKey" value="gov:/apimgt/statistics/ga-config.xml"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler"/>
</handlers>
</api>
错误日志:
[2016-05-10 07:49:17,340] DEBUG - headers http-incoming-6 >> POST /TestVDB/v1.0/VcVDB HTTP/1.1
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Host: 10.178.233.87:8245
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Connection: keep-alive
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Content-Length: 1885
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Cache-Control: no-cache
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Content-Type: application/json
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Authorization: Bearer b51763484717d618473cc9662b237504
[2016-05-10 07:49:17,342] DEBUG - headers http-incoming-6 >> Postman-Token: 9ac93374-5fc7-3f01-1c2d-c23b4fefdecf
[2016-05-10 07:49:17,342] DEBUG - headers http-incoming-6 >> Accept: */*
[2016-05-10 07:49:17,342] DEBUG - headers http-incoming-6 >> Accept-Encoding: gzip, deflate
[2016-05-10 07:49:17,342] DEBUG - headers http-incoming-6 >> Accept-Language: en-US,en;q=0.8
[2016-05-10 07:49:17,350] INFO - LogMediator requestJson = {
"@context": "__http://etc.abc.com/metadata/context.jsonld",
"@id": "__http://etc.abc.com/message/id/abc/Router/327a3063-ab17-48c5-e053-336edb20aae9",
"@type": "msg:Message",
"msg:format": "__http://etc.abc.com/data/voc/Formats/MessageFormat-1",
"msg:type": "__http://etc.abc.com/data/voc/MessageTypes/ServiceCall-1",
"msg:from": "__http://etc.abc.com/data/voc/Contributors/abc/pqr",
"msg:to": "__http://etc.abc.com/data/voc/Contributors/abc/VirusCheck",
"msg:service": {
"@id": "__http://etc.abc.com/message/id/abc/Router/327a3063-ab18-48c5-e053-336edb20aae9",
"@type": "msg:ServiceCall",
"svc:time": "2016-05-10T05:52:05.029Z",
"svc:type": "__http://etc.abc.com/data/voc/ServiceCall/PerformVirusCheck",
"svc:about": "cert-s3-ucmdata-pqr",
"svc:resource": [
"https://s3-ucmdata-pqr.s3.amazonaws.com/EU_WEST_1-cert-s3-ucmdata-pqr-16f817e9f8eb07db4beb70e5d021d13c-63503_58484_99949.pdf?response-content-disposition=attachment%3B%20filename%3D%22EU_WEST_1-cert-s3-ucmdata-pqr-16f817e9f8eb07db4beb70e5d021d13c-63503_58484_99949.pdf%22&response-content-type=application%2Fpdf&AWSAccessKeyId=AKIAJTIYS75JIN6ZWRSQ&Expires=1473241925&Signature=cKyblhLqxS7KAH6k8Okca5BEjyk%3D"
],
"svc:params": [
{
"@context": {
"virus": "__http://etc.abc.com/data/ns/messages/abc/VirusCheckService-1/"
},
"virus:post-result-at": "https://s3-ucmdata-pqr.s3.amazonaws.com/VIRUS_EU_WEST_1-cert-s3-ucmdata-pqr-16f817e9f8eb07db4beb70e5d021d13c-63503_58484_99949.pdf?AWSAccessKeyId=FDSJTIYS75JIN6ZWRSQ&Expires=1473241925&Signature=ev44nf8MA4%2Fkfa9IRmonO8ANpMk%3D",
"virus:remove-file-properties": true,
"virus:and-again-please": null
}
]
},
"@timestamp": "2016-05-10T05:52:05.029Z"
}
{"inputJsonReq":"{\"@context\":\"__http://etc.abc.com/metadata/context.jsonld\",\"@id\":\"__http://etc.abc.com/message/id/abc/Router/327a3063-ab17-48c5-e053-336edb20aae9\",\"@type\":\"msg:Message\",\"msg:format\":\"__http://etc.abc.com/data/voc/Formats/MessageFormat-1\",\"msg:type\":\"__http://etc.abc.com/data/voc/MessageTypes/ServiceCall-1\",\"msg:from\":\"__http://etc.abc.com/data/voc/Contributors/abc/pqr\",\"msg:to\":\"__http://etc.abc.com/data/voc/Contributors/abc/VirusCheck\",\"msg:service\":{\"@id\":\"__http://etc.abc.com/message/id/abc/Router/327a3063-ab18-48c5-e053-336edb20aae9\",\"@type\":\"msg:ServiceCall\",\"svc:time\":\"2016-05-10T05:52:05.029Z\",\"svc:type\":\"__http://etc.abc.com/data/voc/ServiceCall/PerformVirusCheck\",\"svc:about\":\"cert-s3-ucmdata-pqr\",\"svc:resource\":[\"https://cert-s3-ucmdata-pqr.s3.amazonaws.com/EU_WEST_1-cert-s3-ucmdata-pqr-16f817e9f8eb07db4beb70e5d021d13c-63503_58484_99949.pdf?response-content-disposition=attachment%3B%20filename%3D%22EU_WEST_1-cert-s3-ucmdata-pqr-16f817e9f8eb07db4beb70e5d021d13c-63503_58484_99949.pdf%22&response-content-type=application%2Fpdf&AWSAccessKeyId=AKIAJABCS75JIN6ZWRSQ&Expires=1473241925&Signature=cKyblhLqxS7KAH6k8njgf5BEjyk%3D\"],\"svc:params\":[{\"@context\":{\"virus\":\"__http://etc.abc.com/data/ns/messages/abc/VirusCheckService-1/\"},\"virus:post-result-at\":\"https://cert-s3-ucmdata-pqr.s3.amazonaws.com/VIRUS_EU_WEST_1-cert-s3-ucmdata-pqr-16f817eop8b07db4beb70e5d021d13c-63503_58484_99949.pdf?AWSAccessKeyId=AKIAJTXCV75JIN6ZWRSQ&Expires=1473241925&Signature=ev44nf8MA4%2Fkfa9IRdayO8ANpMk%3D\",\"virus:remove-file-properties\":true,\"virus:and-again-please\":null}]},\"@timestamp\":\"2016-05-10T05:52:05.029Z\"}"}
[2016-05-10 07:49:17,364] ERROR - ScriptMediator The script engine returned an error executing the inlined js script function mediate
com.sun.phobos.script.util.ExtendedScriptException: org.mozilla.javascript.WrappedException: Wrapped java.lang.IllegalStateException: Expected attribute value (<Unknown Source>#8) in <Unknown Source> at line number 8
at com.sun.phobos.script.javascript.RhinoCompiledScript.eval(RhinoCompiledScript.java:68)
at javax.script.CompiledScript.eval(CompiledScript.java:92)
at org.apache.synapse.mediators.bsf.ScriptMediator.mediateForInlineScript(ScriptMediator.java:306)
at org.apache.synapse.mediators.bsf.ScriptMediator.invokeScript(ScriptMediator.java:245)
at org.apache.synapse.mediators.bsf.ScriptMediator.mediate(ScriptMediator.java:213)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:166)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:155)
at org.apache.synapse.rest.Resource.process(Resource.java:297)
at org.apache.synapse.rest.API.process(API.java:378)
at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:86)
at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:65)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:295)
at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:317)
at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:363)
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142)
at org.apache.axis2.transport.base.threads.NativeWorkerPool.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.mozilla.javascript.WrappedException: Wrapped java.lang.IllegalStateException: Expected attribute value (<Unknown Source>#8)
at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1754)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:148)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
at org.mozilla.javascript.gen._Unknown_Source__91._c_script_0(<Unknown Source>:8)
at org.mozilla.javascript.gen._Unknown_Source__91.call(<Unknown Source>)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
at org.mozilla.javascript.gen._Unknown_Source__91.call(<Unknown Source>)
at org.mozilla.javascript.gen._Unknown_Source__91.exec(<Unknown Source>)
at com.sun.phobos.script.javascript.RhinoCompiledScript.eval(RhinoCompiledScript.java:55)
... 24 more
Caused by: java.lang.IllegalStateException: Expected attribute value
at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consumeName(JsonXMLStreamReader.java:117)
at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:131)
at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:162)
at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:149)
at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:132)
at org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.hasNext(AbstractXMLStreamReader.java:446)
at org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.next(AbstractXMLStreamReader.java:456)
at javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:88)
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.OMElementImpl.buildNext(OMElementImpl.java:653)
at org.apache.axiom.om.impl.llom.OMNodeImpl.getNextOMSibling(OMNodeImpl.java:122)
at org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:343)
at org.apache.axiom.om.impl.traverse.OMChildrenIterator.getNextNode(OMChildrenIterator.java:36)
at org.apache.axiom.om.impl.traverse.OMAbstractIterator.hasNext(OMAbstractIterator.java:58)
at org.apache.synapse.commons.json.JsonUtil.removeIndentations(JsonUtil.java:414)
at org.apache.synapse.commons.json.JsonUtil.removeIndentations(JsonUtil.java:421)
at org.apache.synapse.commons.json.JsonUtil.removeIndentations(JsonUtil.java:421)
at org.apache.synapse.commons.json.JsonUtil.newJsonPayload(JsonUtil.java:530)
at org.apache.synapse.commons.json.JsonUtil.newJsonPayload(JsonUtil.java:599)
at org.apache.synapse.mediators.bsf.ScriptMessageContext.setPayloadJSON(ScriptMessageContext.java:628)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
... 33 more
[
[2016-05-10 07:49:17,375] INFO - LogMediator STATUS = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = The script engine returned an error executing the inlined js script function mediate
[2016-05-10 07:49:17,384] DEBUG - headers http-incoming-6 << HTTP/1.1 500 Internal Server Error
[2016-05-10 07:49:17,385] DEBUG - headers http-incoming-6 << Accept-Language: en-US,en;q=0.8
[2016-05-10 07:49:17,385] DEBUG - headers http-incoming-6 << Access-Control-Allow-Headers: authorization,Access-Control-Allow-Origin,Content-Type
[2016-05-10 07:49:17,385] DEBUG - headers http-incoming-6 << Access-Control-Allow-Origin: *
[2016-05-10 07:49:17,385] DEBUG - headers http-incoming-6 << Accept-Encoding: gzip, deflate
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Postman-Token: 9ac93374-5fc7-3f01-1c2d-c23b4fefdecf
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Access-Control-Allow-Methods: POST
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Content-Type: application/xml; charset=UTF-8
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Cache-Control: no-cache
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Date: Tue, 10 May 2016 11:49:17 GMT
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Transfer-Encoding: chunked
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Connection: keep-alive
当我们调用mc.setPayloadJSON(newResponseJson);它尝试在消息上下文中构建现有的有效载荷,并在设置修改后的有效载荷之前将其转换为 XML 格式。转换由 StAXON 库 [1] 完成。
StAXON 在进行转换时将“@”字段视为 XML 中的属性。 [2] [3]
例如:
{"node": {"@attribute": "myAttrib"}} 表示为
关于 StAXON,您的有效负载中也存在两个问题,您也已经确定了。
- 它有以下带@字段的对象; StAXON 库不支持它,因为我们不能在 XML 属性中设置对象。
- @字段是在定义了JSON对象的普通字段后定义的("@timestamp": "2016-05-10T05:52:05.029Z")。 StAXON 也将此识别为问题。因为,在 XML 中,我们在开始定义它的 child/text 字段后没有指定属性。
为了缓解这个问题,我们需要避免构建现有消息并将其转换为 XML。为此,我们需要设置以下 属性 以在调用 mc.setPayloadJSON(newResponseJson);
之前从消息上下文中删除现有有效负载
mc.getEnvelope().getBody().getFirstElement().detach();
我正在尝试使用 Javascript 在 WSO2 APIM 中操纵 JSON 请求并将其作为 application/json 发送。我修改了 axis2.xml & axis2_blocking_client.xml 以包括 JsonStreamFormatter 和 JsonStreamBuilder。设置 mc.setPayloadJSON 时得到 org.mozilla.javascript.WrappedException。 以下是代码片段和错误日志:
API snippet(carbon.xml):
<api context="/TestVDB/v1.0" name="creator--testVDB" version="v1.0" version-type="context">
<resource faultSequence="fault" methods="POST" url-mapping="/VcVDB">
<inSequence>
<filter regex="PRODUCTION" source="$ctx:AM_KEY_TYPE">
<then>
<property action="remove"
name="REST_URL_POSTFIX" scope="axis2"/>
<property expression="json-eval($.)" name="JSONPayload"/>
<log level="custom">
<property
expression="get-property('JSONPayload')" name="requestJson"/>
</log>
<property name="action" value="SUBMIT"/>
<script language="js"><![CDATA[var requestJson=mc.getProperty('JSONPayload');
var requestJsonObject=JSON.parse(requestJson);
var requestJsonString=JSON.stringify(requestJsonObject);
var VDBJsonObj = new Object();
VDBJsonObj.inputJsonReq=requestJsonString;
newResponseJson=JSON.stringify(VDBJsonObj);
print(newResponseJson);
mc.setPayloadJSON(newResponseJson);]]></script>
<property name="HTTP_METHOD" scope="axis2"
type="STRING" value="POST"/>
<property name="messageType" scope="axis2" value="application/json"/>
<property
expression="get-property('SYSTEM_TIME')" name="api.ut.backendRequestTime"/>
<send>
<endpoint name="creator--testVDB_APIproductionEndpoint_0">
<http uri-template="{var.uri.host}.{var.uri.port}/FpuVDB/CallRouterView/json/CallRequestRouter"/>
</endpoint>
</send>
</then>
<else>
<sequence key="_sandbox_key_error_"/>
</else>
</filter>
</inSequence>
<outSequence>
<class name="org.wso2.carbon.apimgt.usage.publisher.APIMgtResponseHandler"/>
<send/>
</outSequence>
</resource>
<handlers>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler">
<property name="apiImplementationType" value="ENDPOINT"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler"/>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.throttling.APIThrottleHandler">
<property name="id" value="A"/>
<property name="policyKeyResource" value="gov:/apimgt/applicationdata/res-tiers.xml"/>
<property name="policyKey" value="gov:/apimgt/applicationdata/tiers.xml"/>
<property name="policyKeyApplication" value="gov:/apimgt/applicationdata/app-tiers.xml"/>
</handler>
<handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageHandler"/>
<handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtGoogleAnalyticsTrackingHandler">
<property name="configKey" value="gov:/apimgt/statistics/ga-config.xml"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler"/>
</handlers>
</api>
错误日志:
[2016-05-10 07:49:17,340] DEBUG - headers http-incoming-6 >> POST /TestVDB/v1.0/VcVDB HTTP/1.1
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Host: 10.178.233.87:8245
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Connection: keep-alive
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Content-Length: 1885
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Cache-Control: no-cache
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Content-Type: application/json
[2016-05-10 07:49:17,341] DEBUG - headers http-incoming-6 >> Authorization: Bearer b51763484717d618473cc9662b237504
[2016-05-10 07:49:17,342] DEBUG - headers http-incoming-6 >> Postman-Token: 9ac93374-5fc7-3f01-1c2d-c23b4fefdecf
[2016-05-10 07:49:17,342] DEBUG - headers http-incoming-6 >> Accept: */*
[2016-05-10 07:49:17,342] DEBUG - headers http-incoming-6 >> Accept-Encoding: gzip, deflate
[2016-05-10 07:49:17,342] DEBUG - headers http-incoming-6 >> Accept-Language: en-US,en;q=0.8
[2016-05-10 07:49:17,350] INFO - LogMediator requestJson = {
"@context": "__http://etc.abc.com/metadata/context.jsonld",
"@id": "__http://etc.abc.com/message/id/abc/Router/327a3063-ab17-48c5-e053-336edb20aae9",
"@type": "msg:Message",
"msg:format": "__http://etc.abc.com/data/voc/Formats/MessageFormat-1",
"msg:type": "__http://etc.abc.com/data/voc/MessageTypes/ServiceCall-1",
"msg:from": "__http://etc.abc.com/data/voc/Contributors/abc/pqr",
"msg:to": "__http://etc.abc.com/data/voc/Contributors/abc/VirusCheck",
"msg:service": {
"@id": "__http://etc.abc.com/message/id/abc/Router/327a3063-ab18-48c5-e053-336edb20aae9",
"@type": "msg:ServiceCall",
"svc:time": "2016-05-10T05:52:05.029Z",
"svc:type": "__http://etc.abc.com/data/voc/ServiceCall/PerformVirusCheck",
"svc:about": "cert-s3-ucmdata-pqr",
"svc:resource": [
"https://s3-ucmdata-pqr.s3.amazonaws.com/EU_WEST_1-cert-s3-ucmdata-pqr-16f817e9f8eb07db4beb70e5d021d13c-63503_58484_99949.pdf?response-content-disposition=attachment%3B%20filename%3D%22EU_WEST_1-cert-s3-ucmdata-pqr-16f817e9f8eb07db4beb70e5d021d13c-63503_58484_99949.pdf%22&response-content-type=application%2Fpdf&AWSAccessKeyId=AKIAJTIYS75JIN6ZWRSQ&Expires=1473241925&Signature=cKyblhLqxS7KAH6k8Okca5BEjyk%3D"
],
"svc:params": [
{
"@context": {
"virus": "__http://etc.abc.com/data/ns/messages/abc/VirusCheckService-1/"
},
"virus:post-result-at": "https://s3-ucmdata-pqr.s3.amazonaws.com/VIRUS_EU_WEST_1-cert-s3-ucmdata-pqr-16f817e9f8eb07db4beb70e5d021d13c-63503_58484_99949.pdf?AWSAccessKeyId=FDSJTIYS75JIN6ZWRSQ&Expires=1473241925&Signature=ev44nf8MA4%2Fkfa9IRmonO8ANpMk%3D",
"virus:remove-file-properties": true,
"virus:and-again-please": null
}
]
},
"@timestamp": "2016-05-10T05:52:05.029Z"
}
{"inputJsonReq":"{\"@context\":\"__http://etc.abc.com/metadata/context.jsonld\",\"@id\":\"__http://etc.abc.com/message/id/abc/Router/327a3063-ab17-48c5-e053-336edb20aae9\",\"@type\":\"msg:Message\",\"msg:format\":\"__http://etc.abc.com/data/voc/Formats/MessageFormat-1\",\"msg:type\":\"__http://etc.abc.com/data/voc/MessageTypes/ServiceCall-1\",\"msg:from\":\"__http://etc.abc.com/data/voc/Contributors/abc/pqr\",\"msg:to\":\"__http://etc.abc.com/data/voc/Contributors/abc/VirusCheck\",\"msg:service\":{\"@id\":\"__http://etc.abc.com/message/id/abc/Router/327a3063-ab18-48c5-e053-336edb20aae9\",\"@type\":\"msg:ServiceCall\",\"svc:time\":\"2016-05-10T05:52:05.029Z\",\"svc:type\":\"__http://etc.abc.com/data/voc/ServiceCall/PerformVirusCheck\",\"svc:about\":\"cert-s3-ucmdata-pqr\",\"svc:resource\":[\"https://cert-s3-ucmdata-pqr.s3.amazonaws.com/EU_WEST_1-cert-s3-ucmdata-pqr-16f817e9f8eb07db4beb70e5d021d13c-63503_58484_99949.pdf?response-content-disposition=attachment%3B%20filename%3D%22EU_WEST_1-cert-s3-ucmdata-pqr-16f817e9f8eb07db4beb70e5d021d13c-63503_58484_99949.pdf%22&response-content-type=application%2Fpdf&AWSAccessKeyId=AKIAJABCS75JIN6ZWRSQ&Expires=1473241925&Signature=cKyblhLqxS7KAH6k8njgf5BEjyk%3D\"],\"svc:params\":[{\"@context\":{\"virus\":\"__http://etc.abc.com/data/ns/messages/abc/VirusCheckService-1/\"},\"virus:post-result-at\":\"https://cert-s3-ucmdata-pqr.s3.amazonaws.com/VIRUS_EU_WEST_1-cert-s3-ucmdata-pqr-16f817eop8b07db4beb70e5d021d13c-63503_58484_99949.pdf?AWSAccessKeyId=AKIAJTXCV75JIN6ZWRSQ&Expires=1473241925&Signature=ev44nf8MA4%2Fkfa9IRdayO8ANpMk%3D\",\"virus:remove-file-properties\":true,\"virus:and-again-please\":null}]},\"@timestamp\":\"2016-05-10T05:52:05.029Z\"}"}
[2016-05-10 07:49:17,364] ERROR - ScriptMediator The script engine returned an error executing the inlined js script function mediate
com.sun.phobos.script.util.ExtendedScriptException: org.mozilla.javascript.WrappedException: Wrapped java.lang.IllegalStateException: Expected attribute value (<Unknown Source>#8) in <Unknown Source> at line number 8
at com.sun.phobos.script.javascript.RhinoCompiledScript.eval(RhinoCompiledScript.java:68)
at javax.script.CompiledScript.eval(CompiledScript.java:92)
at org.apache.synapse.mediators.bsf.ScriptMediator.mediateForInlineScript(ScriptMediator.java:306)
at org.apache.synapse.mediators.bsf.ScriptMediator.invokeScript(ScriptMediator.java:245)
at org.apache.synapse.mediators.bsf.ScriptMediator.mediate(ScriptMediator.java:213)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:166)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:155)
at org.apache.synapse.rest.Resource.process(Resource.java:297)
at org.apache.synapse.rest.API.process(API.java:378)
at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:86)
at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:65)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:295)
at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:317)
at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:363)
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142)
at org.apache.axis2.transport.base.threads.NativeWorkerPool.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.mozilla.javascript.WrappedException: Wrapped java.lang.IllegalStateException: Expected attribute value (<Unknown Source>#8)
at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1754)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:148)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
at org.mozilla.javascript.gen._Unknown_Source__91._c_script_0(<Unknown Source>:8)
at org.mozilla.javascript.gen._Unknown_Source__91.call(<Unknown Source>)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
at org.mozilla.javascript.gen._Unknown_Source__91.call(<Unknown Source>)
at org.mozilla.javascript.gen._Unknown_Source__91.exec(<Unknown Source>)
at com.sun.phobos.script.javascript.RhinoCompiledScript.eval(RhinoCompiledScript.java:55)
... 24 more
Caused by: java.lang.IllegalStateException: Expected attribute value
at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consumeName(JsonXMLStreamReader.java:117)
at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:131)
at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:162)
at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:149)
at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:132)
at org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.hasNext(AbstractXMLStreamReader.java:446)
at org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.next(AbstractXMLStreamReader.java:456)
at javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:88)
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.OMElementImpl.buildNext(OMElementImpl.java:653)
at org.apache.axiom.om.impl.llom.OMNodeImpl.getNextOMSibling(OMNodeImpl.java:122)
at org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:343)
at org.apache.axiom.om.impl.traverse.OMChildrenIterator.getNextNode(OMChildrenIterator.java:36)
at org.apache.axiom.om.impl.traverse.OMAbstractIterator.hasNext(OMAbstractIterator.java:58)
at org.apache.synapse.commons.json.JsonUtil.removeIndentations(JsonUtil.java:414)
at org.apache.synapse.commons.json.JsonUtil.removeIndentations(JsonUtil.java:421)
at org.apache.synapse.commons.json.JsonUtil.removeIndentations(JsonUtil.java:421)
at org.apache.synapse.commons.json.JsonUtil.newJsonPayload(JsonUtil.java:530)
at org.apache.synapse.commons.json.JsonUtil.newJsonPayload(JsonUtil.java:599)
at org.apache.synapse.mediators.bsf.ScriptMessageContext.setPayloadJSON(ScriptMessageContext.java:628)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
... 33 more
[
[2016-05-10 07:49:17,375] INFO - LogMediator STATUS = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = The script engine returned an error executing the inlined js script function mediate
[2016-05-10 07:49:17,384] DEBUG - headers http-incoming-6 << HTTP/1.1 500 Internal Server Error
[2016-05-10 07:49:17,385] DEBUG - headers http-incoming-6 << Accept-Language: en-US,en;q=0.8
[2016-05-10 07:49:17,385] DEBUG - headers http-incoming-6 << Access-Control-Allow-Headers: authorization,Access-Control-Allow-Origin,Content-Type
[2016-05-10 07:49:17,385] DEBUG - headers http-incoming-6 << Access-Control-Allow-Origin: *
[2016-05-10 07:49:17,385] DEBUG - headers http-incoming-6 << Accept-Encoding: gzip, deflate
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Postman-Token: 9ac93374-5fc7-3f01-1c2d-c23b4fefdecf
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Access-Control-Allow-Methods: POST
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Content-Type: application/xml; charset=UTF-8
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Cache-Control: no-cache
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Date: Tue, 10 May 2016 11:49:17 GMT
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Transfer-Encoding: chunked
[2016-05-10 07:49:17,386] DEBUG - headers http-incoming-6 << Connection: keep-alive
当我们调用mc.setPayloadJSON(newResponseJson);它尝试在消息上下文中构建现有的有效载荷,并在设置修改后的有效载荷之前将其转换为 XML 格式。转换由 StAXON 库 [1] 完成。 StAXON 在进行转换时将“@”字段视为 XML 中的属性。 [2] [3] 例如: {"node": {"@attribute": "myAttrib"}} 表示为 关于 StAXON,您的有效负载中也存在两个问题,您也已经确定了。
- 它有以下带@字段的对象; StAXON 库不支持它,因为我们不能在 XML 属性中设置对象。
- @字段是在定义了JSON对象的普通字段后定义的("@timestamp": "2016-05-10T05:52:05.029Z")。 StAXON 也将此识别为问题。因为,在 XML 中,我们在开始定义它的 child/text 字段后没有指定属性。
为了缓解这个问题,我们需要避免构建现有消息并将其转换为 XML。为此,我们需要设置以下 属性 以在调用 mc.setPayloadJSON(newResponseJson);
之前从消息上下文中删除现有有效负载mc.getEnvelope().getBody().getFirstElement().detach();