On Sun, Dec 1, 2013 at 11:01 PM, Lakmali Baminiwatta <[email protected]>wrote:

> Hi all,
>
> When processing the response, if the request is REST then soap format,
> transport headers and message type are also stored. Similarly when
> retrieving the cached response, if the request is REST then stored values
> are used to compose the response message. With these modifications cache
> mediator returns the response correctly for non SOAP requests.
>
> But we have another issue here. Currently the request Hash value is
> derived from the SOAP message body. So for REST calls it gets the same hash
> value for all requests which sent without a payload.
>
> ex: Both below requests are recognized as the same request according to
> the hash value derived from DOMHASHGenerator.
>
> curl -v -H "Authorization: Bearer 1EV6Qqa_DboaBzNj2JfiyXoO1Ysa"
> http://localhost:8280/test/1.0.0?regNo=001
> curl -v -H "Authorization: Bearer 1EV6Qqa_DboaBzNj2JfiyXoO1Ysa"
> http://localhost:8280/test/1.0.0?regNo=002<http://localhost:8280/test/1.0.0?regNo=001>
>
> So right now we need to figure out a mechanism to generate hash value for
> REST calls.
>
How if we consider full request path(including query params and etc) +
headers. For above example something like follows (full request path and
"," separated transport headers list). We can compute hash value of that
string and store it.

*"http://localhost:8280/test/1.0.0?regNo=002,Authorization
<http://localhost:8280/test/1.0.0?regNo=002,Authorization>: Bearer
1EV6Qqa_DboaBzNj2JfiyXoO1Ysa"*

Here we cannot only consider full request path as we take some decisions at
backend based on headers. WDYT?

Thanks,
sanjeewa.

>
> Thanks,
> Lakmali
>
>
> On 29 November 2013 00:18, Lakmali Baminiwatta <[email protected]> wrote:
>
>> Hi all,
>>
>> Currently Cache mediator stores the response message as a byte array and
>> builds the soap envelope from that when sending the cached response[1].
>> When building the response, it checks whether the request format is in
>> SOAP11 or SOAP12 and do the build accordingly.
>>
>> For SOAP requests, the SOAP format for response and request messages are
>> same since most of the time a WSDL is used. So above logic works.
>>
>> But the response message for REST calls may be in different SOAP formats
>> than the request. This results in errors when building the message.
>>
>> ex:
>>
>> Below REST call's request message context is SOAP12. But the response
>> SOAP envelope is SOAP11. Hence building the message throws an exception.
>>
>> curl -v -H "Authorization: Bearer 1EV6Qqa_DboaBzNj2JfiyXoO1Ysa"
>> http://localhost:8280/test/1.0.0?regNo=001
>>
>> Further Content-Type of the responses can be different (ex:
>> application/xml, application/json). So I think we should store the actual
>> SOAP format and the Content-Type of the response than just storing the
>> response envelope. One option would be to store them in CachableResponse
>> object[2] (May be in a property map?)
>>
>> Any better way to fix this?
>>
>> [1]
>> https://svn.wso2.org/repos/wso2/carbon/platform/branches/turing/dependencies/synapse/2.1.2-wso2v2/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java
>> [2]
>> https://svn.wso2.org/repos/wso2/carbon/platform/branches/turing/dependencies/commons/caching/4.0.2/modules/core/src/main/java/org/wso2/caching/CachableResponse.java
>>
>> Thanks,
>> Lakmali
>>
>>
>> On 22 November 2013 15:59, Sumedha Rubasinghe <[email protected]> wrote:
>>
>>> Dinusha,
>>> Did you identify what needs to be fixed? I think ESB team is busy with a
>>> release.
>>>
>>>
>>> On Thu, Nov 21, 2013 at 7:09 PM, Dinusha Senanayaka <[email protected]>wrote:
>>>
>>>> Hi All,
>>>>
>>>> We are trying to add response caching as a default feature in API
>>>> Manager using Cache mediator. There, we found that Cache mediator could
>>>> handle only SOAP-1.1 or  SOAP-1.2 messages.
>>>>
>>>> - If backend returns a POX response, it throws the following exception
>>>> [1] when request is served from the cache.
>>>> - If backend returns a JSON response, and once the response get added
>>>> to cache, client does not receive a response until cache expires. (No
>>>> backend errors)
>>>>
>>>> Is it possible to fix those for API Manager-1.6.0 release ?
>>>>
>>>> [1] [2013-11-21 13:33:18,044] ERROR - NativeWorkerPool Uncaught
>>>> exception
>>>> org.apache.axiom.soap.SOAPProcessingException: Transport level
>>>> information does not match with SOAP Message namespace URI
>>>>     at
>>>> org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.identifySOAPVersion(StAXSOAPModelBuilder.java:187)
>>>>     at
>>>> org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:170)
>>>>     at org.apache.axis2.saaj.SOAPPartImpl.<init>(SOAPPartImpl.java:194)
>>>>     at
>>>> org.apache.axis2.saaj.SOAPMessageImpl.<init>(SOAPMessageImpl.java:112)
>>>>     at
>>>> org.apache.axis2.saaj.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:132)
>>>>     at
>>>> org.wso2.caching.util.SOAPMessageHelper.buildSOAPEnvelopeFromBytes(SOAPMessageHelper.java:77)
>>>>     at
>>>> org.apache.synapse.mediators.builtin.CacheMediator.processRequestMessage(CacheMediator.java:319)
>>>>     at
>>>> org.apache.synapse.mediators.builtin.CacheMediator.mediate(CacheMediator.java:170)
>>>>     at
>>>> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
>>>>     at
>>>> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
>>>>     at
>>>> org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:160)
>>>>     at
>>>> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
>>>>     at
>>>> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
>>>>     at
>>>> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
>>>>     at org.apache.synapse.rest.Resource.process(Resource.java:297)
>>>>     at org.apache.synapse.rest.API.process(API.java:341)
>>>>     at
>>>> org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76)
>>>>     at
>>>> org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:63)
>>>>     at
>>>> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)
>>>>     at
>>>> org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
>>>>     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
>>>>     at
>>>> org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:337)
>>>>     at
>>>> org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:378)
>>>>     at
>>>> org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:184)
>>>>     at
>>>> org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
>>>>     at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>     at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>     at java.lang.Thread.run(Thread.java:619)
>>>>
>>>> Regards,
>>>> Dinusha.
>>>>
>>>>
>>>>
>>>> --
>>>> Dinusha Dilrukshi
>>>> Senior Software Engineer
>>>> WSO2 Inc.: http://wso2.com/
>>>> Mobile: +94725255071
>>>> Blog: http://dinushasblog.blogspot.com/
>>>>
>>>
>>>
>>>
>>> --
>>> /sumedha
>>> m: +94 773017743
>>> b :  bit.ly/sumedha
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> [email protected]
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>> Lakmali Baminiwatta
>>  Software Engineer
>> WSO2, Inc.: http://wso2.com
>> lean.enterprise.middleware
>> mobile:  +94 71 2335936
>> blog : lakmali.com
>>
>>
>
>
> --
> Lakmali Baminiwatta
>  Software Engineer
> WSO2, Inc.: http://wso2.com
> lean.enterprise.middleware
> mobile:  +94 71 2335936
> blog : lakmali.com
>
>
> _______________________________________________
> Dev mailing list
> [email protected]
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 

*Sanjeewa Malalgoda*
Senior Software Engineer
WSO2 Inc.
Mobile : +94713068779

 <http://sanjeewamalalgoda.blogspot.com/>blog
:http://sanjeewamalalgoda.blogspot.com/<http://sanjeewamalalgoda.blogspot.com/>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to