2016-02-19 141 views
1

我正嘗試讓使用WSO2 ESB消費服務,如「服務/ UserIdentityManagementAdminService?WSDL」和SCIM像「」 WSO2/SCIM /用戶」在WSO2是一個代理,(我想平衡在房委會與HTTPS端點地址),我有一個代理,我可以消耗SCIM,但是當我試圖讓WSDL WSO2 ESB只是發送日誌,如:WSO2 ESB代理到IS

信息{org.apache.synapse.mediators .builtin.LogMediator}收件人:/ services/PRX_SC_IS_SERVICES/services/UserInformationRecoveryService?wsdl, MessageID:urn:uuid:10516b34-8004-4c70-9d4c-61957e4d9147,方向:請求,信封:{org.apache.synapse.mediators .builtin.LogMediator}

我認爲問題是,在URL中使用服務後的代理名稱,因爲當我打電話給另一個URL我沒有問題。

我的代理配置:

<proxy xmlns="http://ws.apache.org/ns/synapse" 
    name="PRX_SC_IS_SERVICES" 
    transports="http" 
    statistics="disable" 
    trace="disable" 
    startOnLoad="true"> 
<target> 
    <inSequence> 
     <property xmlns:ns="http://org.apache.synapse/xsd" 
       name="Authorization" 
       expression="fn:concat('Basic ', base64Encode('admin:admin'))" 
       scope="transport"/> 
     <send> 
      <endpoint key="IS_EP_HTTPS"/> 
     </send> 
    </inSequence> 
    <outSequence> 
     <send/> 
    </outSequence> 
</target> 
<description/> 

回答

0

有了WSO2你不容做一個通用的代理,你不容代理名稱後使用這個詞的服務。 最簡單的方式做,這是安裝的Nginx和使用它像代理與這樣的CONF反向:

upstream https.is{ 
     server IP_IS01:9446; 
     server IP_IS02:9446; 
    } 

    server { 
     listen  8443 ssl; 
     server_name IP_HOST; 

     ssl_certificate  ssl.crt; 
     ssl_certificate_key ssl.key; 

     location/{ 
       proxy_pass    https://https.is/; 
       proxy_set_header  Host $http_host; 
     } 
    } 

,你可以做的另一件事情是移動在ESB上下文服務(axis2.xml和碳.xml)複製到另一個上下文中,並部署兩個重寫上下文/服務和/ wso2/scim的API,因爲現在代理服務應該重定向到另一個上下文,例如/ services/UserAdmin到一個IS wsdl。 API例如:

<resource methods="POST" uri-template="/PRX*"> 
    <inSequence> 
    <send> 
     <endpoint> 
      <address uri="http://HOST_ESB:PORT_ESB/newservicescontext/"></address> 
     </endpoint> 
    </send> 
    </inSequence> 
    <outSequence> 
    <send></send> 
    </outSequence>