Ashish, Thanks for the detailed reply. Could you please email me the sample code you have?
Ashish-24 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. > > 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"?> > <!-- --> :-( > > 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? > > 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. > > 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 > > -- View this message in context: http://www.nabble.com/MINA---design-guidelines-tp20077627p20110316.html Sent from the Apache MINA User Forum mailing list archive at Nabble.com.
