2016-07-15 1 views
0

私は2つの異なるAPIをクローンして応答を結合しようとしていますが、常にnullポインタエラーが発生しています。最初は、私はこれらの2つのAPIを複製しようとしています。あなたの財産は、プロパティから値を取得するかどうかを確認してください2つの異なるapiからのwso2クローニング

[2016-07-15 13:57:34,106] ERROR - PassThroughHttpSender Failed to submit the response 
java.lang.NullPointerException 
    at org.apache.synapse.transport.passthru.util.SourceResponseFactory.create(SourceResponseFactory.java:67) 
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:463) 
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:264) 
    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.rest.Resource.process(Resource.java:348) 
    at org.apache.synapse.rest.API.process(API.java:336) 
    at org.apache.synapse.rest.RESTRequestHandler.apiProcess(RESTRequestHandler.java:120) 
    at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:100) 
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:55) 
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:304) 
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:541) 
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:179) 
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
    at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:252) 
    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) 
[2016-07-15 13:57:34,121] ERROR - Axis2Sender Access-Control-Allow-Origin:*,Cache-Control:public, max-age=28800,Content-Type:application/json;charset=utf-8,ETag:"37a6259cc0c1dae299a7866489dff0bd",Status:404 Not Found,X-Memc:MISS,X-Memc-Age:0,X-Memc-Expires:28800,X-Memc-Key:d0c5ca8e07e81f5246e96c9e4bd54753,X-RateLimit-Limit:40,X-RateLimit-Remaining:39,X-RateLimit-Reset:1468562263,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/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:613) 
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:266) 
    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.rest.Resource.process(Resource.java:348) 
    at org.apache.synapse.rest.API.process(API.java:336) 
    at org.apache.synapse.rest.RESTRequestHandler.apiProcess(RESTRequestHandler.java:120) 
    at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:100) 
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:55) 
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:304) 
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:541) 
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:179) 
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
    at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:252) 
    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: java.lang.NullPointerException 
    at org.apache.synapse.transport.passthru.util.SourceResponseFactory.create(SourceResponseFactory.java:67) 
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:463) 
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:264) 
    ... 16 more 
[2016-07-15 13:57:34,124] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:f814f333-463b-4f51-89f1-2c361d7c55ae, Direction: response, MESSAGE = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = Access-Control-Allow-Origin:*,Cache-Control:public, max-age=28800,Content-Type:application/json;charset=utf-8,ETag:"37a6259cc0c1dae299a7866489dff0bd",Status:404 Not Found,X-Memc:MISS,X-Memc-Age:0,X-Memc-Expires:28800,X-Memc-Key:d0c5ca8e07e81f5246e96c9e4bd54753,X-RateLimit-Limit:40,X-RateLimit-Remaining:39,X-RateLimit-Reset:1468562263,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope> Unexpected error sending message back, Payload: {"status_code":34,"status_message":"The resource you requested could not be found."} 

答えて

0

<?xml version="1.0" encoding="UTF-8"?> 
<api context="/movieapi" name="movieapi" xmlns="http://ws.apache.org/ns/synapse"> 
    <resource methods="GET" uri-template="/movie/{imdbId}"> 
     <inSequence> 
      <property expression="get-property('uri.var.imdbId')" name="uri.var.imdbId" scope="default" type="STRING"/> 
      <clone> 
       <target> 
        <endpoint> 
         <address trace="disable" uri="https://api.themoviedb.org/3/movie/{uri.var.imdbId}?api_key=code&amp;append_to_response=casts,images"/> 
        </endpoint> 
       </target> 
       <target> 
        <endpoint> 
         <address trace="disable" uri="http://www.omdbapi.com/?type=movie&amp;i={uri.var.imdbId}"/> 
        </endpoint> 
       </target> 
      </clone> 
     </inSequence> 
    </resource> 
</api> 

はここwso2esbバージョン5ベータ版からの私のエラーです。そのためには、以下のようなログメディエーターを使用します。

<log level="full"> 
<property expression="get-property('uri.var.imdbId')" name="uri.var.imdbId" scope="default" type="STRING"/> 
</log> 

次に、問題は部分を取得しています。

問題は、回答の送信に関するものです。あなたの設定によれば、あなたは応答を集める集約メディエータを追加しませんでした[1]。追加してテストしてください。

ここにサンプルシナリオを追加します。 SimpleStockQuoteサービス[2]のインスタンスを2つ起動して、SOAPUI経由でプロキシにメッセージを公開するだけです。

<proxy name="ScatterGatherProxy" startOnLoad="true" trace="disable" transports="https http"> 
<description/> 
<target> 
    <inSequence> 
     <clone> 
      <target> 
       <sequence> 
        <send> 
         <endpoint name="vendorA"> 
          <address uri="http://localhost:9001/services/SimpleStockQuoteService/"/> 
         </endpoint> 
        </send> 
       </sequence> 
      </target> 
      <target> 
       <sequence> 
        <send> 
         <endpoint name="vendorB"> 
          <address uri="http://localhost:9002/services/SimpleStockQuoteService/"/> 
         </endpoint> 
        </send> 
       </sequence> 
      </target> 
     </clone> 
    </inSequence> 
    <outSequence> 
     <log level="full"/> 
     <aggregate> 
      <completeCondition> 
       <messageCount min="2"/> 
      </completeCondition> 
      <onComplete expression="//m0:return" 
       xmlns:m0="http://services.samples" xmlns:m1="http://services.samples/xsd"> 
       <enrich> 
        <source clone="true" xpath="//m0:return[not(preceding-sibling::m0:return/m1:last &lt;= m1:last) and not(following-sibling::m0:return/m1:last &lt; m1:last)]"/> 
        <target type="body"/> 
       </enrich> 
       <send/> 
      </onComplete> 
     </aggregate> 
    </outSequence> 
</target> 

[1] https://docs.wso2.com/display/ESB490/Aggregate+Mediator

[2] https://docs.wso2.com/display/ESB490/Setting+Up+the+ESB+Samples#Starting%20the%20Axis2%20server

+0

それはプロパティから値を取得しません。 '[2016-07-15 14:17:40,029] INFO - LogMediator To:/ movieapi/movie/tt0918940、MessageID:urn:uuid:be033ca6-0430-4284-9942-569d65fe8f87、Direction:request、uri.var。 imdbId = tt0918940、封筒:<?xml version = '1.0' encoding = 'utf-8'?> ' –

+1

エラーは応答の送信に失敗しました。あなたは応答を得るためにメディエーターを配置しませんでした。エンドポイントからの応答を得るために集約メディエーターを追加する必要があります –

+0

私の答えは参照で変更されました。 –

関連する問題