<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=US-ASCII">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>RE: [JDEV] Question on using NIO with SAX</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Thanks for the info.&nbsp;&nbsp; I will look into it and see if I can find something useful.</FONT>
</P>

<P><FONT SIZE=2>Oscar</FONT>
</P>

<P><FONT SIZE=2>-----Original Message-----</FONT>
<BR><FONT SIZE=2>From: Joe Hildebrand [<A HREF="mailto:jhildebrand@jabber.com">mailto:jhildebrand@jabber.com</A>]</FONT>
<BR><FONT SIZE=2>Sent: Friday, March 22, 2002 9:26 AM</FONT>
<BR><FONT SIZE=2>To: jdev@jabber.org</FONT>
<BR><FONT SIZE=2>Subject: Re: [JDEV] Question on using NIO with SAX</FONT>
</P>
<BR>
<BR>

<P><FONT SIZE=2>I did a JNI wrapper around xpat for marbles, as a stop-gap.</FONT>
</P>

<P><FONT SIZE=2><A HREF="http://marbles.sourceforge.net/" TARGET="_blank">http://marbles.sourceforge.net/</A></FONT>
</P>

<P><FONT SIZE=2>Haven't worked on it in a while, but it should still be there.</FONT>
</P>
<BR>
<BR>

<P><FONT SIZE=2>&quot;Chan, Oscar&quot; &lt;OChan@pogo.com&gt; writes:</FONT>
</P>

<P><FONT SIZE=2>&gt; Thanks. I guess I will have to live with this until the SAX API provide</FONT>
<BR><FONT SIZE=2>&gt; API for this push-model parser.&nbsp; </FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt; I looked at the Xerces-J parser's parseSome() method, but it is only for</FONT>
<BR><FONT SIZE=2>&gt; parsing the first line of XML document to get the encoding in XML</FONT>
<BR><FONT SIZE=2>&gt; Declaration, so it does not work in the way that I needed.</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt; Thanks again, </FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt; Oscar </FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt; -----Original Message----- </FONT>
<BR><FONT SIZE=2>&gt; From: David Waite [ <A HREF="mailto:mass@akuma.org">mailto:mass@akuma.org</A> &lt;<A HREF="mailto:mass@akuma.org">mailto:mass@akuma.org</A>&gt; ] </FONT>
<BR><FONT SIZE=2>&gt; Sent: Thursday, March 21, 2002 5:16 PM </FONT>
<BR><FONT SIZE=2>&gt; To: jdev@jabber.org </FONT>
<BR><FONT SIZE=2>&gt; Subject: Re: [JDEV] Question on using NIO with SAX </FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt; This is an issue with the SAX Api (which understandably, we can't </FONT>
<BR><FONT SIZE=2>&gt; change). What you want is a push-model parser (like SAX) which takes a </FONT>
<BR><FONT SIZE=2>&gt; block of bytes/characters and calls events on the DocumentHandler (on </FONT>
<BR><FONT SIZE=2>&gt; that thread) until that block of data has been processed, then returns </FONT>
<BR><FONT SIZE=2>&gt; or saves the remainder until the next time it is passed.&nbsp; SAX does not </FONT>
<BR><FONT SIZE=2>&gt; define this, and anything which does this at least is extending SAX. </FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt; I believe Xerces-J at least defines a parseSome method on its XmlParser </FONT>
<BR><FONT SIZE=2>&gt; method, but I don't know if this does what you want. </FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt; -David Waite </FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt; Chan, Oscar wrote: </FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt;&gt; Hi all, </FONT>
<BR><FONT SIZE=2>&gt;&gt; </FONT>
<BR><FONT SIZE=2>&gt;&gt; I am new here.&nbsp; I am now developing a message server based on the </FONT>
<BR><FONT SIZE=2>&gt;&gt; subset of Jabber protocol. I am building using Java, and SAX parser in</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt;&gt; javax.xml.parsers package.&nbsp;&nbsp; My problem is that I am trying to code </FONT>
<BR><FONT SIZE=2>&gt;&gt; the server so that it can use NIO (new i/o) package once java 1.4 is </FONT>
<BR><FONT SIZE=2>&gt;&gt; stable enough to use.&nbsp; By using NIO, it eliminates the problem of </FONT>
<BR><FONT SIZE=2>&gt;&gt; having a thread per socket because it multiplexes the input and store </FONT>
<BR><FONT SIZE=2>&gt;&gt; the data in a buffer instead of blocking the call and waiting until </FONT>
<BR><FONT SIZE=2>&gt;&gt; data is available.&nbsp; Usually, the server machine will slow down when </FONT>
<BR><FONT SIZE=2>&gt;&gt; the number of thread reach about 1000.&nbsp; Therefore, NIO will increase </FONT>
<BR><FONT SIZE=2>&gt;&gt; the number of connection that we can have. </FONT>
<BR><FONT SIZE=2>&gt;&gt; </FONT>
<BR><FONT SIZE=2>&gt;&gt; Since parse() method in java.xml.parsers.SAXParser is using a blocking</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt;&gt; I/O and, hence, it increase the number of threads. Does anyone know </FONT>
<BR><FONT SIZE=2>&gt;&gt; any workaround for it, or any future support for SAX using NIO? </FONT>
<BR><FONT SIZE=2>&gt;&gt; </FONT>
<BR><FONT SIZE=2>&gt;&gt; Thanks </FONT>
<BR><FONT SIZE=2>&gt;&gt; </FONT>
<BR><FONT SIZE=2>&gt;&gt; Oscar </FONT>
<BR><FONT SIZE=2>&gt;&gt; </FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt; _______________________________________________ </FONT>
<BR><FONT SIZE=2>&gt; jdev mailing list </FONT>
<BR><FONT SIZE=2>&gt; jdev@jabber.org </FONT>
<BR><FONT SIZE=2>&gt; <A HREF="http://mailman.jabber.org/listinfo/jdev" TARGET="_blank">http://mailman.jabber.org/listinfo/jdev</A></FONT>
<BR><FONT SIZE=2>&gt; &lt;<A HREF="http://mailman.jabber.org/listinfo/jdev" TARGET="_blank">http://mailman.jabber.org/listinfo/jdev</A>&gt;&nbsp; </FONT>
<BR><FONT SIZE=2>&gt;</FONT>
</P>

<P><FONT SIZE=2>-- </FONT>
<BR><FONT SIZE=2>Joe Hildebrand</FONT>
<BR><FONT SIZE=2>Chief Architect</FONT>
<BR><FONT SIZE=2>Jabber, Inc.</FONT>
<BR><FONT SIZE=2><A HREF="http://www.jabber.com/" TARGET="_blank">http://www.jabber.com/</A></FONT>
</P>

<P><FONT SIZE=2>_______________________________________________</FONT>
<BR><FONT SIZE=2>jdev mailing list</FONT>
<BR><FONT SIZE=2>jdev@jabber.org</FONT>
<BR><FONT SIZE=2><A HREF="http://mailman.jabber.org/listinfo/jdev" TARGET="_blank">http://mailman.jabber.org/listinfo/jdev</A></FONT>
</P>

</BODY>
</HTML>