2017-04-26 8 views
0

私はクラウド技術を使い始めています。私は単純なhello worldの例を実装しようとしています。私は新しいwso2エンタープライズ統合サーバーを使用しています。私は簡単なAPIをセットアップしようとしています。WSO2EI hello world apiを統合

私は1エンドポイント実装しました:

<endpoint xmlns="http://ws.apache.org/ns/synapse"> 
    <address uri="http://192.168.1.100:9191/v1/hello"> 
     <suspendOnFailure> 
     <progressionFactor>1.0</progressionFactor> 
     </suspendOnFailure> 
     <markForSuspension> 
     <retriesBeforeSuspension>0</retriesBeforeSuspension> 
      <retryDelay>0</retryDelay> 
     </markForSuspension> 
    </address> 
</endpoint> 

私が実装しました2つの系列:

<?xml version="1.0" encoding="UTF-8"?> 
<sequence name="HelloWorldIN" xmlns="http://ws.apache.org/ns/synapse"> 
    <send> 
     <endpoint key="gov:/HelloWorld"/> 
    </send> 
</sequence> 

<?xml version="1.0" encoding="UTF-8"?> 
<sequence name="HelloWorldOUT" xmlns="http://ws.apache.org/ns/synapse"> 
    <send/> 
</sequence> 

、最終的にはAPI自体を

<api xmlns="http://ws.apache.org/ns/synapse" name="HelloWorld" context="/helloworld" hostname="192.168.1.100" port="9191"> 
    <resource methods="GET" uri-template="/v1/hello" inSequence="HelloWorldIN" outSequence="HelloWorldOUT"/> 
</api> 

このAPIにGET(http://192.168.1.162:8280/helloworld/v1/hello)リクエストを行うと、私は202の応答を受け取り、データは取得しません。どんな助けもありがとう。

EDIT: これは完全な設定です:行うには

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://ws.apache.org/ns/synapse"> 
    <registry provider="org.wso2.carbon.mediation.registry.WSO2Registry"> 
     <parameter name="cachableDuration">15000</parameter> 
    </registry> 
    <taskManager provider="org.wso2.carbon.mediation.ntask.NTaskTaskManager"/> 
    <sequence name="HelloWorldOUT"> 
     <send buildmessage="true"/> 
    </sequence> 
    <sequence name="fault"> 
     <!-- Log the message at the full log level with the ERROR_MESSAGE and the ERROR_CODE--> 
     <log level="full"> 
      <property name="MESSAGE" value="Executing default 'fault' sequence"/> 
      <property expression="get-property('ERROR_CODE')" name="ERROR_CODE"/> 
      <property expression="get-property('ERROR_MESSAGE')" name="ERROR_MESSAGE"/> 
      </log> 
     <!-- Drops the messages by default if there is a fault --> 
     <drop/> 
    </sequence> 
    <sequence name="main"> 
     <in> 
      <!-- Log all messages passing through --> 
      <log level="full"/> 
      <!-- ensure that the default configuration only sends if it is one of samples --> 
      <!-- Otherwise Synapse would be an open proxy by default (BAD!)    --> 
      <filter regex="http://localhost:9000.*" source="get-property('To')"> 
       <!-- Send the messages where they have been sent (i.e. implicit "To" EPR) --> 
       <send/> 
      </filter> 
     </in> 
     <out> 
      <send/> 
     </out> 
     <description>The main sequence for the message mediation</description> 
    </sequence> 
    <sequence name="HelloWorldIN"> 
     <send> 
      <endpoint name="gov//HelloWorld"> 
       <address uri="http://192.168.1.100:9191/v1/hello"/> 
      </endpoint> 
     </send> 
    </sequence> 
    <api context="/helloworld" hostname="192.168.1.100" 
    name="HelloWorld" port="9191" statistics="enable" trace="enable"> 
     <resource inSequence="HelloWorldIN" methods="GET" 
     outSequence="HelloWorldOUT" uri-template="*"/> 
    </api> 
    <!-- You can add any flat sequences, endpoints, etc.. to this synapse.xml file if you do 
*not* want to keep the artifacts in several files --> 

答えて

0

まず最初は、主系列の変更です。

<?xml version="1.0" encoding="UTF-8"?> 
<sequence name="main" xmlns="http://ws.apache.org/ns/synapse"> 
    <in> 
     <!-- Log all messages passing through --> 
     <log level="full"/> 
     <!-- ensure that the default configuration only sends if it is one of samples --> 
     <!-- Otherwise Synapse would be an open proxy by default (BAD!)    --> 
     <filter regex="http://localhost:9000.*" 
     source="get-property('To')" xmlns:ns="http://org.apache.synapse/xsd"> 
      <then> 
       <!-- Send the messages where they have been sent (i.e. implicit "To" EPR) --> 
       <send/> 
      </then> 
      <else> 
       <log/> 
       <sequence key="gov:/HelloWorldIN"/> 
      </else> 
     </filter> 
    </in> 
    <out> 
     <send/> 
    </out> 
    <description>The main sequence for the message mediation</description> 
</sequence> 

apiで意味のある名前が使用されていることを確認してください。これにより、esbの設定が容易になります。あなたのapiが同じサブドメインを聴いている場合、URL書き換えメディエータは必要ありません。私はこれを達成するために私のAPIのコンテキストを変更しました。

<api xmlns="http://ws.apache.org/ns/synapse" name="HelloWorld" context="/hello" hostname="192.168.1.100" port="9191"> 
    <resource methods="GET" inSequence="HelloWorldIN" outSequence="HelloWorldOUT"/> 
</api>