2016-06-28 20 views
0

WSO2のESB 4.9.0にAPIアーティファクトがあり、単純なPUT RESTサービスを提供しています。WSO2のREST APIで空のレスポンスを返すESB

PUTサービスはここで着信要求のログを簡略化し、コンテンツなしでHTTPコード200で応答する必要があります。

これは、APIのリソースです:私は、次の例外を取得(GET要求で使用されている)をtrueにプロパティ "NO_ENTITY_BODY" と

<api xmlns="http://ws.apache.org/ns/synapse" name="myapi" context="/context"> 
    <resource methods="PUT" uri-template="/resource"> 
     <inSequence> 
      <log level="custom"> 
       <property name="PUT" value="/v1/updateWorkflowData" /> 
      </log> 
      <property name="NO_ENTITY_BODY" value="true" scope="axis2" /> 
      <property name="HTTP_SC" value="200" scope="axis2" /> 
      <respond /> 
     </inSequence> 
    </resource> 
</api> 

[2016-06-28 12:27:27,524] ERROR - PassThroughHttpSSLSender Failed to submit the response 
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean 
     at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:468) 
     at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:267) 
     at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 
     at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:212) 
     at org.apache.synapse.mediators.builtin.RespondMediator.mediate(RespondMediator.java:28) 
     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:149) 
     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:97) 
     at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:65) 
     at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:266) 
     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$1.run(NativeWorkerPool.java:172) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
[2016-06-28 12:27:27,555] ERROR - Axis2Sender Accept-Encoding:gzip,deflate,Content-Type:application/json,Host:localhost:8243,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope> Unexpected error sending message back 
org.apache.axis2.AxisFault: Failed to submit the response 
     at org.apache.synapse.transport.passthru.PassThroughHttpSender.handleException(PassThroughHttpSender.java:610) 
     at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:269) 
     at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 
     at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:212) 
     at org.apache.synapse.mediators.builtin.RespondMediator.mediate(RespondMediator.java:28) 
     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:149) 
     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:97) 
     at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:65) 
     at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:266) 
     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$1.run(NativeWorkerPool.java:172) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean 
     at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:468) 
     at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:267) 
     ... 20 more 

私の質問は現在:

  1. 一般:リクエストにコンテンツが含まれている場合、レスポンスを空に設定するにはどうすればよいですか?
  2. "NO_ENTITY_BODY"のソリューションは間違っていて動作しませんか?

答えて

0

1)スクリプトメディエータを使用して、応答本文を空の文字列に置き換えることができます。これを行う他の方法もあります。スクリプトメディエーターはオプションです。

2)"NO_ENTITY_BODY「あなたは体を持っていない要求からの応答を期待することを指定するために使用されている。例えばGETリクエスト。

0

NO_ENTITY_BODYあなたはtype属性を追加する必要がありますので、ブール値になることを期待:

<property name="NO_ENTITY_BODY" value="true" scope="axis2" type="BOOLEAN" /> 
関連する問題