On Wed, Oct 22, 2008 at 6:42 AM, Ashish <[EMAIL PROTECTED]> wrote:

> <?xml version="1.0" encoding="UTF-8"?> is just an indication of which
> version and encoding to be used.
> Many applications omit this as well, and still this works.
>
> Just to summarize what I understood from this thread
> 1. Need an XML Decoder/Encoder for a MINA based application :-)
> 2. Multiple XML documents can be received. The client code may be
> multiplexing all messages to a server. Though this is a very typical
> behavior indicating that Clients are asynchronous, they don't wait for
> a response, else wouldn't have sent the next xml
>
> I believe the solution has been discussed. Look for Start tag and end
> tag. I worked out a sample using CumulativeProtocolDecoder and it
> seems to work fine for simple cases. Its really a bad piece of code
> and won't like to scare away anyone :-)
>
> These are the logical steps
> 1. Find the root element
> 2. Once found, keep looking till you get the end element, and return
> false from doDecode()
> if you don't receive it plan to throw away the message, as per some
> strategy not known to me
> 3. Once you get the end element, write to the ProtocolDecoderOutput
> and return true from doDecode(). Now you IoHandler shall see the
> complete xml. Just get the bytes from IoBuffer and create a new
> String. Use any XML parser either in IoHandler or in another filter.
> 4. Keep XML parsing in a filter if you can really ensure your
> IoHandler can easily detect the incoming Object (Logic of which object
> to choose should be simple)
> Done
>
> Just to make life a little more complicated, here are the things I got
> stuck
>
> 1. Large packets get fragment. I used MINA's pom.xml and tested it,
> got 4 read operations. Now the question is how should I detect and
> reassemble out of order packets? I my code I simply appended to the
> buffer for each read. MINA experts to guide on guide on this.


IMO reassembling out of order packets should not be done in this layer.
If you need your packets in order, use TCP: it does the reassembling for
you.


>
>
> 2. To create a generic XML Decoder, we need to have functionality as
> per XML spec. for simple xml easy solution would do. My program failed
> coz, pom.xml had comment after <?xml version="1.0" encoding="UTF-8"?>
> <!-- --> :-(


While I think it would be great to have an example MINA app that deals with
decoding XML,
I don't think a generic XML Decoder should be part of MINA.

I wonder if their are java XML libs out there (xmlbeans ?) that take an
InputStream parameter, so that one can feed bytes into it
and it will notify when a complete message is decoded.



> 3. If have 2 xml messages in my decoder, how to pass one to handler
> and keep other withing decoder till its get completed. Basically
> generating 2 message received at IoHandler?


This should automatically be taken care of when you subclass from
CumulativeProtocolDecoder.



>
>
> We could overcome problem 2 using some regular expression and
> implementing basic XML parser functionality. Alternatively for a very
> robust implementation we may use implementation similar to AsyncWeb's
> DecodingState parsing of HTTP.
>
> I have been blogging about MINA for a while. Trustin and Mike have
> already been there. Not sure whether to share them here or not? The
> post are the simple example programs that I worked out using MINA.
> Forum admins can guide me on this.


Not sure what the question is ?
It certainly is OK to announce blog posts about MINA on this list.

Maarten



>
>
> thanks
> ashish
>
> On Wed, Oct 22, 2008 at 4:03 AM, Andres Martinez Quijano
> <[EMAIL PROTECTED]> wrote:
> > so the <?xml version="1.0" encoding="UTF-8"?> tag uniquely describes
> > the begining of a new document
> >
> > On Tue, Oct 21, 2008 at 6:37 PM, newToMina <[EMAIL PROTECTED]> wrote:
> >>
> >> The messages will of the following format.
> >> <?xml version="1.0" encoding="UTF-8"?>
> >> <Message>
> >> <MessageType>XYZ</MessageType>
> >> <MessageId>1212</StoreNum>
> >> <DateTime>20070510132500</DateTime>
> >> .
> >> .
> >> .
> >> .
> >> </Message>
> >>
> >> The </Message> tag indicates the end of a document.
> >
>
>
>
> --
> thanks
> ashish
>
> Blog: http://www.ashishpaliwal.com/blog
>
> My Photo Galleries: http://www.pbase.com/ashishpaliwal
>

Reply via email to