On Sat, 2008-07-12 at 19:31 +0530, Milinda Pathirage wrote:
> As Thilina mentioned in above thread Axis2/Java keeps a instance of
> mime parser in it's xml builder. So I think it's ok to follow that
> method. AFAIK, I think if we enable MTOM caching we have to have this
> feature or is anybody have ideas about how to solve this without going
> to this method?. Manjula can you point out the changes we need in the
> parser. Then we can discuss the problem and available solutions. This
> will help us to avoid any problems occur in the future because of the
> changes. 
> If we have two methods for xml reader creation, how we can use both of
> them in the Axis2/C engine. Are we going to check the MIME headers and
> create the required xml reader?

In the MTOM case the serialized message is most probably in the
following format.

--MimeBoundary
mime_header1:xxxxx
mime_header2:xxxxx

<soapenv:Envelope>.......</soapenv:Envelope>
--MimeBoundary
mime_header1:xxxx
mime_header2:xxxx

yyyyyyyyybinarydatayyyyyyyyyyyy
--MimeBoundary--

We have the information form http_headers whether this is a multipart
message or not. So will call the soap_builder straightaway with a flag
telling this is a multipart message. Since the modified soap_builder
will have a reference to mime_parser instance when seeing this flag it
will call the mime_parser. mime_parser will search for \r\n\r\n sequence
between SOAP part and first mime_headers set. When searching for this it
may read some part of the SOAP. So after this search we can't
straightaway call either xml_reader_create_for_io or
xml_reader_create_for_memory, because none of them will not get correct
xml. So what we need is first read from a buffer and then when that
buffer is finished read from the network stream. This will cause to
define and implement the new xml_reader function and corresponding
modifications at parser level as I mentioned in my previous mail.

-Manjula.   
 

> 
> Thanks,
> Milinda...
> 
> On Sat, Jul 12, 2008 at 6:53 PM, Manjula Peiris <[EMAIL PROTECTED]>
> wrote:
>         Hi all,
>         
>         MTOM caching stuff is finished in both send and receiving
>         sides.It is
>         available here [1]. But due to this [2] problem, it cannot be
>         integrated
>         to Axis2/C trunk.
>         
>         In order to solve that problem we need to keep a reference of
>         mime_parser instance in the soap_builder similarly
>         stax_builder. So when
>         parsing the soap part the xml_reader will not just read from
>         the stream,
>         but also need to read from the buffer which will be available
>         after
>         parsing mime_headrs. So we need to create a parser instance
>         which will
>         first read from the buffer and when that buffer is not
>         containing any
>         more data, it will read from the stream. So we may need to add
>         a new
>         function say,
>         xml_reader_create_for_memory_and_io and change some of the
>         logic in
>         parser.
>         Your suggestions are highly appreciated.
>         
>         
> [1]https://svn.apache.org/repos/asf/webservices/axis2/branches/c/post_1_4_mtom/c
>         
>         [2]http://marc.info/?l=axis-c-dev&amp;m=121320959601769&amp;w=2
>         
>         Thanks,
>         -Manjula.
>         
>         
>         --
>         Manjula Peiris: http://manjula-peiris.blogspot.com/
>         
>         
>         ---------------------------------------------------------------------
>         To unsubscribe, e-mail: [EMAIL PROTECTED]
>         For additional commands, e-mail: [EMAIL PROTECTED]
>         
> 
> 
> 
> -- 
> http://mpathirage.com
> http://wso2.org "Oxygen for Web Service Developers"
> http://wsaxc.blogspot.com "Web Services With Axis2/C"


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to