Seth, Thank you very much for your thoughtful and very complete message. Is anyone else out there working on a Tomcat CometProcessor-based streaming implementation? I foresee about 2k LOC standing between the current code and one that includes an endpoint that can be used with a CometProcessor implementor. If you're already working on such an implementation or if you would like to, then let's please talk over Google Talk or whatever. I am [EMAIL PROTECTED] on Google Talk.
Since BlazeDS already includes functionality to route messages across clusters, this would turn it into the server I've been looking for. Adam --- In flexcoders@yahoogroups.com, "Seth Hodgson" <[EMAIL PROTECTED]> wrote: > > Hi Adam, > > > > Adobe is not working on this, although I'd encourage the community to. > > Here's why we're not. > > > > 1. We're participating in the Servlet 3 JSR which will add async > IO support to the Servlet API (in the form of suspendable/resumable > requests). Once that API is finalized you can expect official support > for it in BlazeDS. > > 2. The CometProcessor API in Tomcat and the pre-final version of > suspendable requests in Jetty are not standard APIs - they'll be > superceeded by what makes it into the official Servlet 3 spec, making > official Adobe support for these non-standard APIs a dead end. > > 3. We provide NIO-based HTTP endpoints that support both streaming > and long polling in LCDS 2.6 and scale into the 10s of thousands of > concurrent connections. These endpoints share their underlying plumbing > with our existing RTMP endpoint. This works in any servlet container, > not just Jetty or Tomcat, making it consistently useful to all our > customers and affording us the ability to tune it directly. > > > > That said, I'll reiterate that the community is encouraged to build > custom long-polling or streaming endpoints on top of the non-standard > Tomcat and Jetty APIs. Someone should take the lead on organizing the > community effort, and coordinating it. There's no sense in having ten of > you out there working on ten versions of the same thing J One thing > you'll need to be aware of is that for threadless long-polling support > you can't rely on the JVM saving the current Thread's execution stack > for you on a wait() and resuming later via a notify(); you actually need > to save off the request processing state yourself in order to resume it > later. To help out with this, I moved our suspendable AMF filter classes > into the BlazeDS codebase so you guys should use that rather than the > existing AMF filter classes that cannot be suspended/resumed; they're in > the same package: flex.messaging.endpoints.amf. > > > > Good luck and keep me posted, > Seth > > > > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On > Behalf Of aduston1976 > Sent: Friday, June 13, 2008 9:21 AM > To: flexcoders@yahoogroups.com > Subject: [flexcoders] Non-Blocking IO and BlazeDS Streaming > > > > I need to push data to Flex clients, and I need more than 400 clients > to connect to each host. Even though I'm using BlazeDS for RPC, I was > thinking of using the XIFF XMPP library with a jabber server for > pushing data to clients, since streaming in BlazeDS uses blocking IO. > But, looking at the relevant classes in flex.messaging, > flex.messaging.endpoints, and flex.messaging.client in BlazeDS, I see > that it might not be too difficult to create a new servlet that > implements org.apache.catalina.CometProcessor and a new > BaseHTTPEndpoint subclass that can support multiple connections for > each thread. Such an implementation would be able to support over 10K > simultaneous streaming connections per host. > > Is there anyone else who's working on this, or interested in working > on it? Is Adobe already on the case, making this a waste of time? Any > thoughts or suggestions are appreciated. > > Adam >