On Thu, May 24, 2012 at 3:18 PM, Afkham Azeez <[email protected]> wrote:

> Nice analysis. Proposed solution looks good. Please implement it & test
> for any regression issues.
>

Ok, will do!

Thanks for the feedback!

>
> On Thu, May 24, 2012 at 2:33 PM, Nirmal Fernando <[email protected]> wrote:
>
>> Hi All,
>>
>> Finally I've been able to find the root cause for the $subject and the
>> solution.
>>
>> *Scenario*:
>>
>> * A tenant change its main sequence to something like following.
>>
>> <sequence xmlns="http://ws.apache.org/ns/synapse"; name="main"
>> trace="enable">
>>    <in>
>>       <send>
>>          <endpoint>
>>             <address uri="
>> http://appserver.stratoslive.wso2.com/services/t/a.com/SimpleStockQuoteService";
>> format="soap11" />
>>          </endpoint>
>>       </send>
>>    </in>
>>    <out>
>>       <send />
>>    </out>
>> </sequence>
>>
>> * A client trying to access this tenant's services through a REST call.
>>
>> *Explanation to the problem:*
>>
>> * In the product this works like following:
>>
>> * Since ESB doesn't have any real service in it, what Synapse (RESTUtil)
>> does is set its default service property as the axis-service in
>> MessageContext in order to inject the request into the main sequence.
>> Following code handles that:
>>
>> if (axisService == null) {
>>             String defaultSvcName =
>> NHttpConfiguration.getInstance().getStringValue(
>>                     "nhttp.default.service", "__SynapseService");
>>             axisService = msgContext.getConfigurationContext()
>>                     .getAxisConfiguration().getService(defaultSvcName);
>>         }
>>  msgContext.setAxisService(axisService);
>>
>> * But in the service's case, finding the service should be done
>> carefully, since we need to access relevant tenant's main sequence, not
>> super admin's.
>>
>>
>> *Proposing Solution*:
>>
>> * Currently in
>> org.wso2.carbon.core.multitenancy.MultitenantMessageReceiver's doNhttpREST
>> method, we are processing a REST message coming in from the NHTTP transport.
>> * For this method we're passing the "service name".
>>          if service URL is
>> http://esb.cloud-test.wso2.com:8280/services/t/test.com/myproxy :
>> service name is "myproxy"
>>          if service URL is
>> http://esb.cloud-test.wso2.com:8280/services/t/test.com : service name
>> is ""
>> * Hence, I think we could safely assume that if service name is "", the
>> request should go to the default service i.e. "__SynapseService" of that
>> particular tenant.
>> * Thus, we can set the axis-service of the message context of that tenant
>> to this default service within MultitenantMessageReceiver's doNhttpREST
>> method.
>> * The code portion I've added is following:
>>
>>         // handling requests with an empty service part
>>         if("".equals(servicePart)){
>>             // we assume that the request should go to the default service
>>
>> tenantInMsgCtx.setAxisService(tenantConfigCtx.getAxisConfiguration().getService("__SynapseService"));
>>         }
>>
>>
>> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>> If you have any concerns with the above approach please fire them up ASAP.
>>
>>
>> --
>>
>> Thanks & regards,
>> Nirmal
>>
>> Software Engineer- Platform Technologies Team, WSO2 Inc.
>> Mobile: +94715779733
>> Blog: http://nirmalfdo.blogspot.com/
>>
>
>
>
> --
> *Afkham Azeez*
> Director of Architecture; WSO2, Inc.; http://wso2.com
> Member; Apache Software Foundation; http://www.apache.org/
> * <http://www.apache.org/>**
> email: **[email protected]* <[email protected]>* cell: +94 77 3320919
> blog: **http://blog.afkham.org* <http://blog.afkham.org>*
> twitter: **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
> *
> linked-in: **http://lk.linkedin.com/in/afkhamazeez*
> *
> *
> *Lean . Enterprise . Middleware*
>
>


-- 

Thanks & regards,
Nirmal

Software Engineer- Platform Technologies Team, WSO2 Inc.
Mobile: +94715779733
Blog: http://nirmalfdo.blogspot.com/
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to