Hi Amila,

Agree with you, I did with this way because I ran all these in my PC for
have an abstract idea. No perf testing environment was setup. But will do
a exact test with the XPATH optimization changes.

Thanks
AndunSLG


On Mon, Sep 17, 2012 at 6:38 PM, Amila Suriarachchi <[email protected]> wrote:

>
>
> On Mon, Sep 17, 2012 at 6:11 PM, Andun Sameera <[email protected]> wrote:
>
>> Hi All,
>>
>> I have developed the custom mediator AKA RawXSLTMediator to transform
>> streams in binary relay mood. Samisa suggested some further improvements
>> after looking at the code and currently I am working on those. With the
>> existing implementation I did some test with ESB. The results of those
>> tests are given below. For large message sizes, it has
>> improved nearly twice.
>>
>
> great.
>
> BTW did you warm up the server before taking the readings. For lower
> concurrencies you are not sending enough messages. Better to vary both
> concurrency and messags so that total would be around 50,000.
>
> thanks,
> Amila.
>
>>
>> 8k Message             Raw XSLT Mediator         Normal XSLT Mediator
>>
>> Request Per Second Time Taken Request Per Second Time Taken
>>
>> n=100, c=1 55.97 1.786816 55.89 1.789259
>> n=100, c=5 295.55 1.691735 158.39 3.156814
>> n=100, c=10 298.41 3.351045 162.28 6.162070
>> n=100, c=20 177.38 11.275533 168.38 11.877941
>> n=100, c=40 226.15 17.687198 170.03 23.524984
>> n=100, c=80 187.01 42.778756 165.54 48.325473
>> n=100, c=160 168.49 94.962065 165.00 96.969543
>> n=100, c=320 169.63 188.643735 164.23 194.848353
>> n=100, c=640 165.60 386.484129 122.07 524.308358
>>
>> 100k Message              Raw XSLT Mediator Normal XSLT Mediator
>>
>>  Reuest Per Second Time Taken Request Per Second Time Taken
>> n=100, c=1 49.85 2.005901 12.48 8.012235
>> n=100, c=5 233.87 2.137914 105.34 4.746719
>> n=100, c=10 297.86 3.357259 135.02 7.406090
>> n=100, c=20 294.79 6.784513 159.66 12.526382
>> n=100, c=40 263.21 15.196750 177.38 22.550458
>> n=100, c=80 228.47 35.015699 154.64 51.731678
>> n=100, c=160 230.33 69.465916 132.66 120.606647
>> n=100, c=320 232.24 137.787760 119.52 267.728523
>> n=100, c=640 243.97 262.322362 122.07 524.308358
>>
>> Thanks
>> AndunSLG
>>
>> On Sun, Sep 16, 2012 at 3:13 PM, Paul Fremantle <[email protected]> wrote:
>>
>>> Also presumably this approach would work very simply if someone didn't
>>> use SOAP but simply wanted to transform Plain Ole XML.
>>>
>>> Paul
>>>
>>> On 16 September 2012 09:37, Andun Sameera <[email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> +1 For the idea about
>>>> the trade-off between Performance and Flexibility. This will solve
>>>> the problem I think. Because here I used a XSLT which will transform and
>>>> give a element of the message. So If we give the responsibility to the
>>>> person who write the transformation to preserve the SOAP message, It will
>>>> solve all the issues.
>>>> Also will try to find a way to  write a extension which will give some
>>>> more flexibility to user.
>>>>
>>>> Thanks
>>>> AndunSLG
>>>>
>>>>
>>>> On Sun, Sep 16, 2012 at 12:45 PM, Sanjiva Weerawarana <[email protected]
>>>> > wrote:
>>>>
>>>>> IIRC the old xslt mediator had a "source" parameter to indicate what
>>>>> should be sent in. Without that, its correct that we send in the entire
>>>>> message - if its SOAP its the whole envelope etc.. If the transform should
>>>>> produce a SOAP message that's up to the person to generate it.
>>>>>
>>>>> So IMO we should call this new high perf XSLT mediator a "raw xslt"
>>>>> mediator or something like that and make clear what the responsibility of
>>>>> the person writing the transform is.
>>>>>
>>>>> We could also (later) write an extension that supports a few source
>>>>> parameters - e.g. "body" and then do some byte level parsing (a very basic
>>>>> xml parser) that strips out the other stuff and passes the body thru.
>>>>>
>>>>> IMO we don't need that - we have a high perf one that requires you to
>>>>> process the whole message and we have the current one which gives you a 
>>>>> lot
>>>>> more flexibility at a performance tradeoff.
>>>>>
>>>>> So in other words, lets finish this and ship it!
>>>>>
>>>>> Sanjiva.
>>>>>
>>>>> On Sun, Sep 16, 2012 at 10:35 AM, Andun Sameera <[email protected]>wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Sun, Sep 16, 2012 at 5:50 AM, Hiranya Jayathilaka <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Sat, Sep 15, 2012 at 5:19 PM, Hiranya Jayathilaka <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> I don't know for sure whether this problem can be solved. But
>>>>>>>> sometime back I wrote a custom mediator to do XSLT transformations 
>>>>>>>> using
>>>>>>>> the StAX support available in the Java TrAX API. It showed a fairly 
>>>>>>>> good
>>>>>>>> performance improvement against the existing implementation too.
>>>>>>>>
>>>>>>>> Solving the problem mentioned in this thread will be pretty hard.
>>>>>>>> Perhaps we can relax the conditions a bit. We can wrap the output of 
>>>>>>>> the
>>>>>>>> transformation in a SOAP envelope and put that back in the data 
>>>>>>>> handler. We
>>>>>>>> will use
>>>>>>>>
>>>>>>>
>>>>>>> s/use/loose/
>>>>>>>
>>>>>>>
>>>>>>>> any information in the original SOAP headers, but that won't be an
>>>>>>>> issue for most practical scenarios.
>>>>>>>>
>>>>>>>
>>>>>> Hi Hiranya,
>>>>>>
>>>>>> Your argument is correct Hirnaya. But I am also blocked while doing
>>>>>> "wrap the output of the transformation in a SOAP envelope", because
>>>>>> I don't know which part of the message is transformed. I blindly pass
>>>>>> the input stream to transformer, because of the requirement of avoid
>>>>>> opening the input stream using AXIOM. So without knowing which part of 
>>>>>> the
>>>>>> message is transformed and given back, how can I find the place to 
>>>>>> replace
>>>>>> in the newly created SOAP envelop. Sometimes it can be Envelop,Body,
>>>>>> element etc.
>>>>>> So any solution ?
>>>>>>
>>>>>> Thanks
>>>>>> AndunSLG
>>>>>>
>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Hiranya
>>>>>>>>
>>>>>>>> On Sat, Sep 15, 2012 at 9:23 AM, Andun Sameera <[email protected]>wrote:
>>>>>>>>
>>>>>>>>> Hi Amila,
>>>>>>>>>
>>>>>>>>> On Sat, Sep 15, 2012 at 9:22 PM, Amila Suriarachchi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Does xslt engine supports xml stream level transformations?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Yes. But not 100% streams, but we can transform StreamSource
>>>>>>>>> object to a StreamResult using the Transformer.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> After xslt transformations users may want to do further
>>>>>>>>>> processing with the message. So in that case we can avoid building 
>>>>>>>>>> request
>>>>>>>>>> Axiom object but may required to create the transformed Axiom object.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Yes your argument is correct, sometimes we have to create the
>>>>>>>>> result message. But I got in to trouble even before. In
>>>>>>>>> the present scenario, XSLT mediator  read some parameters from the 
>>>>>>>>> request
>>>>>>>>> using AXIOM. It read weather transformation is happening to SOAP body 
>>>>>>>>> or
>>>>>>>>> SOAP envelop etc. Based on those parameters after
>>>>>>>>> the transformation mediator reform the message. You can fine that 
>>>>>>>>> logic in
>>>>>>>>> [1]<http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/dependencies/synapse/2.1.0-wso2v7/modules/core/src/main/java/org/apache/synapse/mediators/transform/XSLTMediator.java?view=markup>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>>> But here I have no such parameters, I have only a input stream and
>>>>>>>>> I transform it using the XSLT file. After transformation I have no 
>>>>>>>>> clue
>>>>>>>>> to reform the message. What I do is set the output stream to
>>>>>>>>> the data-handler in binary relay dummy message. So some parts of the
>>>>>>>>> original message get dropped and everything crashes here after.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> thanks,
>>>>>>>>>> Amila.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sat, Sep 15, 2012 at 4:16 PM, Andun Sameera <[email protected]>wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi All,
>>>>>>>>>>>
>>>>>>>>>>> My requirement is $Subject. Purpose of this is avoid using AXIOM
>>>>>>>>>>> to to XSLT transformation. Our plan was to do all the 
>>>>>>>>>>> transformation using
>>>>>>>>>>> Input, Output Streams. javax.xml.transform.Transformer is used to do
>>>>>>>>>>> the transformation using streams. I developed the mediator using
>>>>>>>>>>> the following logic,
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>    - In the Binary Relay We get the Message as a Data Handler
>>>>>>>>>>>    in a Dummy SOAP Message. From that we can get a Input Stream for 
>>>>>>>>>>> the SOAP
>>>>>>>>>>>    message which needs to be transformed using XSLT.
>>>>>>>>>>>    - We can Get the input Stream for the XSLT file, which is in
>>>>>>>>>>>    registry or local.
>>>>>>>>>>>    - Using those two we can do the XSLT transformation. As a
>>>>>>>>>>>    result we get a stream for the transformed SOAP message.
>>>>>>>>>>>    - Finally I create a DataHandler using the stream and
>>>>>>>>>>>    attached it to the Relay's Dummy SOAP message replacing existing 
>>>>>>>>>>> one.
>>>>>>>>>>>
>>>>>>>>>>> The output of the mediator follows this logic is given below. I
>>>>>>>>>>> used the Sample 
>>>>>>>>>>> 8<http://wso2.org/project/esb/java/4.0.3/docs/samples/message_mediation_samples.html#Sample8>of
>>>>>>>>>>>  ESB. I replaced the XSLT mediator with my custom mediator in the 
>>>>>>>>>>> Binary
>>>>>>>>>>> Relay.
>>>>>>>>>>> But there is a major problem here. Because of the logic we used
>>>>>>>>>>> the original SOAP message,
>>>>>>>>>>>
>>>>>>>>>>> <soapenv:Envelope xmlns:soapenv="
>>>>>>>>>>> http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Header
>>>>>>>>>>> xmlns:wsa="http://www.w3.org/2005/08/addressing";><wsa:To>
>>>>>>>>>>> http://localhost:9000/services/SimpleStockQuoteService</wsa:To><wsa:MessageID>urn:uuid:0f7403b4-c5bc-4347-8921-562f2736a2ab</wsa:MessageID><wsa:Action>urn:getQuote</wsa:Action></soapenv:Header><soapenv:Body><m0:CheckPriceRequest
>>>>>>>>>>> xmlns:m0="http://services.samples
>>>>>>>>>>> "><m0:Code>IBM</m0:Code></m0:CheckPriceRequest></soapenv:Body></soapenv:Envelope>
>>>>>>>>>>>
>>>>>>>>>>>  is now converted to.
>>>>>>>>>>>
>>>>>>>>>>> <m:getQuote xmlns:m="http://services.samples";>
>>>>>>>>>>>    <m:request>
>>>>>>>>>>>       <m:symbol>IBM</m:symbol>
>>>>>>>>>>>    </m:request>
>>>>>>>>>>> </m:getQuote>
>>>>>>>>>>>
>>>>>>>>>>> At the end Binary Relay Formatter will read the DataHandler and
>>>>>>>>>>> above SOAP message will be sent to the AXIS2 Server and It will 
>>>>>>>>>>> crash,
>>>>>>>>>>> because this is not a valid SOAP message.
>>>>>>>>>>> This problem occurs because we are not using AXIOM anymore. In
>>>>>>>>>>> the normal XSLT mediator it
>>>>>>>>>>> uses org.apache.synapse.util.xpath.SourceXPathSupport class to find 
>>>>>>>>>>> the
>>>>>>>>>>> part of the message which transformed using XSLT. So it can replace
>>>>>>>>>>> the transformed part of the original message. But here we cant use 
>>>>>>>>>>> that
>>>>>>>>>>> kind of a logic. Because we use only streams. We cant build 
>>>>>>>>>>> OMElements or
>>>>>>>>>>> etc.
>>>>>>>>>>>
>>>>>>>>>>> Need help to solve this problem. The custom mediator java files
>>>>>>>>>>> are attached here.
>>>>>>>>>>>
>>>>>>>>>>> Thanks
>>>>>>>>>>> AndunSLG
>>>>>>>>>>>
>>>>>>>>>>> References :
>>>>>>>>>>>
>>>>>>>>>>> [1] -
>>>>>>>>>>> http://wso2.org/project/esb/java/4.0.3/docs/samples/message_mediation_samples.html#Sample8
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Console Output for the Custom Mediator :
>>>>>>>>>>>
>>>>>>>>>>> .....................Original SOAP
>>>>>>>>>>> Envelop..........................
>>>>>>>>>>> <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope
>>>>>>>>>>> xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";><soapenv:Body><ns:binary
>>>>>>>>>>> xmlns:ns="http://ws.apache.org/commons/ns/payload
>>>>>>>>>>> ">PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48c29hcGVudjpFbnZlbG9wZSB4bWxuczpzb2FwZW52PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHNvYXBlbnY6SGVhZGVyIHhtbG5zOndzYT0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wOC9hZGRyZXNzaW5nIj48d3NhOlRvPmh0dHA6Ly9sb2NhbGhvc3Q6OTAwMC9zZXJ2aWNlcy9TaW1wbGVTdG9ja1F1b3RlU2VydmljZTwvd3NhOlRvPjx3c2E6TWVzc2FnZUlEPnVybjp1dWlkOjBmNzQwM2I0LWM1YmMtNDM0Ny04OTIxLTU2MmYyNzM2YTJhYjwvd3NhOk1lc3NhZ2VJRD48d3NhOkFjdGlvbj51cm46Z2V0UXVvdGU8L3dzYTpBY3Rpb24+PC9zb2FwZW52OkhlYWRlcj48c29hcGVudjpCb2R5PjxtMDpDaGVja1ByaWNlUmVxdWVzdCB4bWxuczptMD0iaHR0cDovL3NlcnZpY2VzLnNhbXBsZXMiPjxtMDpDb2RlPklCTTwvbTA6Q29kZT48L20wOkNoZWNrUHJpY2VSZXF1ZXN0Pjwvc29hcGVudjpCb2R5Pjwvc29hcGVudjpFbnZlbG9wZT4=</ns:binary></soapenv:Body></soapenv:Envelope>
>>>>>>>>>>>
>>>>>>>>>>> ................................................................................
>>>>>>>>>>>
>>>>>>>>>>> .....................Original SOAP
>>>>>>>>>>> Message........................
>>>>>>>>>>> <soapenv:Envelope xmlns:soapenv="
>>>>>>>>>>> http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Header
>>>>>>>>>>> xmlns:wsa="http://www.w3.org/2005/08/addressing";><wsa:To>
>>>>>>>>>>> http://localhost:9000/services/SimpleStockQuoteService</wsa:To><wsa:MessageID>urn:uuid:0f7403b4-c5bc-4347-8921-562f2736a2ab</wsa:MessageID><wsa:Action>urn:getQuote</wsa:Action></soapenv:Header><soapenv:Body><m0:CheckPriceRequest
>>>>>>>>>>> xmlns:m0="http://services.samples
>>>>>>>>>>> "><m0:Code>IBM</m0:Code></m0:CheckPriceRequest></soapenv:Body></soapenv:Envelope>
>>>>>>>>>>>
>>>>>>>>>>> ................................................................................
>>>>>>>>>>>
>>>>>>>>>>> Transforming On Progress.....
>>>>>>>>>>>
>>>>>>>>>>> ...................Transformed SOAP Message...................
>>>>>>>>>>> <m:getQuote xmlns:m="http://services.samples";>
>>>>>>>>>>>    <m:request>
>>>>>>>>>>>       <m:symbol>IBM</m:symbol>
>>>>>>>>>>>    </m:request>
>>>>>>>>>>> </m:getQuote>
>>>>>>>>>>>
>>>>>>>>>>> ..............................................................................
>>>>>>>>>>>
>>>>>>>>>>> ...................Transformed SOAP Envelop..................
>>>>>>>>>>> <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope
>>>>>>>>>>> xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";><soapenv:Body><ns:binary
>>>>>>>>>>> xmlns:ns="http://ws.apache.org/commons/ns/payload
>>>>>>>>>>> ">PG06Z2V0UXVvdGUgeG1sbnM6bT0iaHR0cDovL3NlcnZpY2VzLnNhbXBsZXMiPgogICA8bTpyZXF1ZXN0PgogICAgICA8bTpzeW1ib2w+SUJNPC9tOnN5bWJvbD4KICAgPC9tOnJlcXVlc3Q+CjwvbTpnZXRRdW90ZT4K</ns:binary></soapenv:Body></soapenv:Envelope>
>>>>>>>>>>>
>>>>>>>>>>> ..............................................................................
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Amila Suriarachchi*
>>>>>>>>>>
>>>>>>>>>> Software Architect
>>>>>>>>>> WSO2 Inc. ; http://wso2.com
>>>>>>>>>> lean . enterprise . middleware
>>>>>>>>>>
>>>>>>>>>> phone : +94 71 3082805
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> Any suggestions to overcome this problem ?
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>> AndunSLG
>>>>>>>>>
>>>>>>>>> [1]
>>>>>>>>> http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/dependencies/synapse/2.1.0-wso2v7/modules/core/src/main/java/org/apache/synapse/mediators/transform/XSLTMediator.java?view=markup
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Dev mailing list
>>>>>>>>> [email protected]
>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Hiranya Jayathilaka
>>>>>>>> Mayhem Lab/RACE Lab;
>>>>>>>> Dept. of Computer Science, UCSB;  http://cs.ucsb.edu
>>>>>>>> E-mail: [email protected] <[email protected]>;  Mobile: +1 (805)
>>>>>>>> 895-7443
>>>>>>>> Blog: http://techfeast-hiranya.blogspot.com
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Hiranya Jayathilaka
>>>>>>> Mayhem Lab/RACE Lab;
>>>>>>> Dept. of Computer Science, UCSB;  http://cs.ucsb.edu
>>>>>>> E-mail: [email protected] <[email protected]>;  Mobile: +1 (805)
>>>>>>> 895-7443
>>>>>>> Blog: http://techfeast-hiranya.blogspot.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dev mailing list
>>>>>> [email protected]
>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Sanjiva Weerawarana, Ph.D.
>>>>> Founder, Chairman & CEO; WSO2, Inc.;  http://wso2.com/
>>>>> email: [email protected]; phone: +94 11 763 9614; cell: +94 77 787 6880| +1
>>>>> 650 265 8311
>>>>> blog: http://sanjiva.weerawarana.org/
>>>>>
>>>>> Lean . Enterprise . Middleware
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Dev mailing list
>>>> [email protected]
>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>
>>>>
>>>
>>>
>>> --
>>> Paul Fremantle
>>> CTO and Co-Founder, WSO2
>>> OASIS WS-RX TC Co-chair, VP, Apache Synapse
>>>
>>> UK: +44 207 096 0336
>>> US: +1 646 595 7614
>>>
>>> blog: http://pzf.fremantle.org
>>> twitter.com/pzfreo
>>> [email protected]
>>>
>>> wso2.com Lean Enterprise Middleware
>>>
>>> Disclaimer: This communication may contain privileged or other
>>> confidential information and is intended exclusively for the addressee/s.
>>> If you are not the intended recipient/s, or believe that you may have
>>> received this communication in error, please reply to the sender indicating
>>> that fact and delete the copy you received and in addition, you should not
>>> print, copy, retransmit, disseminate, or otherwise use the information
>>> contained in this communication. Internet communications cannot be
>>> guaranteed to be timely, secure, error or virus-free. The sender does not
>>> accept liability for any errors or omissions.
>>>
>>>
>>
>
>
> --
> *Amila Suriarachchi*
>
> Software Architect
> WSO2 Inc. ; http://wso2.com
> lean . enterprise . middleware
>
> phone : +94 71 3082805
>
>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to