2017-04-26 80 views
0

我剛剛開始使用雲技術,並試圖實現一個簡單的hello世界示例。我正在使用新的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> 

我實現了兩個序列:

<?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接受的響應,沒有數據。任何幫助,將不勝感激。

編輯: 這是完整的配置:

<?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>