2016-04-27 15 views
0

Webサービスを呼び出すときに完全なログメッセージを取得するために、グローバル出力ログメディエータを使用します。 クライアントがSOAP Webサービスを使用する場合、すべてが順番になります。 クライアントがREST Webサービスを呼び出すと、例外が発生し、応答は実行時エラーです。WSO2AMログメディエータ例外(休憩中)

サービスごとにメディエータを作成する以外に、私ができることはありますか?グローバルではありませんか? (例えばlogmediator)ゲートウェイを構築していきます

この

はメディエーター定義

<sequence xmlns="http://ws.apache.org/ns/synapse" name="WSO2AM--Ext--Out"> 
<log level="full"> 
    <property name="ParentID:" expression="get-property('parentID')"/> 
    <property name="ActualRemoteAddress:" expression="get-property('client')"/> 
    <property name="AuthHeader:" expression="get-property('AuthHeader')"/> 
</log> 
であり、これは、コンテンツを意識伝達物質を使用している例外

ERROR - RelayUtils Error while building Passthrough stream 
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,11] 
Message: Not in an object 
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296) 
    at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109) 
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570) 
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566) 
    at org.apache.synapse.commons.json.JsonUtil.toXml(JsonUtil.java:278) 
    at org.apache.synapse.commons.json.JsonBuilder.processDocument(JsonBuilder.java:35) 
    at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:138) 
    at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:135) 
    at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:100) 
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72) 
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48) 
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:155) 
    at org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler.mediate(APIManagerExtensionHandler.java:56) 
    at org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler.handleResponse(APIManagerExtensionHandler.java:85) 
    at org.apache.synapse.rest.API.process(API.java:320) 
    at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:86) 
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:52) 
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:295) 
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:529) 
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:172) 
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
    at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:251) 
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,11] 
Message: Not in an object 
    at org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.hasNext(AbstractXMLStreamReader.java:449) 
    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) 
    ... 25 more 
+0

新しいログで質問を更新できますか? –

+0

これは、ワイヤとヘッダーのログを有効にした出力です https://www.dropbox.com/s/r7oeodwjawhehwu/wire.log – Spiros

+0

残りのクライアントを使用してサービスを呼び出すと、エラーは次の行に起因します。 2016-05-09 16:49:56,437] DEBUG - wire >> ""こんにちは、私 ""あなたはxmlオブジェクトを送信していません、テキストだけです... soapclientを使用しているときに同じものをキャプチャしようとします。両方のメッセージを比較してください –

答えて

0

の始まりですペイロードをsoap形式に変換します。これは、axis2.xmlで定義されたメッセージビルダーによって行われます。ペイロードのコンテンツタイプに応じて、正しいメッセージビルダが選択されます。

ワイヤログでは、ゲートウェイはコンテンツタイプ-application/jsonを使用してバックエンドからペイロードを取得します。しかし、ペイロード( "こんにちは、私")は実際のjson形式ではありません。そのビルダーはペイロードを解析できません

[2016-05-09 16:49:56,433] DEBUG - wire >> "HTTP/1.1 200 OK[\r][\n]" 
[2016-05-09 16:49:56,433] DEBUG - wire >> "Date: Mon, 09 May 2016 13:48:10 GMT[\r][\n]" 
[2016-05-09 16:49:56,433] DEBUG - wire >> "Server: Apache/2.4.7 (Ubuntu)[\r][\n]" 
[2016-05-09 16:49:56,433] DEBUG - wire >> "X-Powered-By: PHP/5.5.9-1ubuntu4.16[\r][\n]" 
[2016-05-09 16:49:56,435] DEBUG - wire >> "Content-Length: 11[\r][\n]" 
[2016-05-09 16:49:56,435] DEBUG - wire >> "Keep-Alive: timeout=5, max=100[\r][\n]" 
[2016-05-09 16:49:56,435] DEBUG - wire >> "Connection: Keep-Alive[\r][\n]" 
[2016-05-09 16:49:56,435] DEBUG - wire >> **"Content-Type: application/json**[\r][\n]" 
[2016-05-09 16:49:56,435] DEBUG - wire >> "[\r][\n]" 
[2016-05-09 16:49:56,437] DEBUG - wire >> **""Hello, me""**