Thanks Gregg,
I wasn't aware of that ;)
Cheers,
Peter.
Gregg Wonderly wrote:
The Jini 2.0 software includes the ability to use NIO in the TCP
endpoint. This is activated by system property
"com.sun.jini.jeri.tcp.useNIO". If you look at TcpEndpoint and
TcpServerEndpoint, you'll not find much different going on. The
biggest issue with a typical network "distributed" system, is circular
wait that can occur as systems "randomly" develop new connections to
other system. Using a single thread to dispatch events in a server
for "load handling" is not a good thing for any "work" that can have
"external" contact. So, the use of NIO for
"scalability" is find for things that don't end up interacting
circularly. For things that you have no idea how they will interact,
it's better to make sure that you have "new inbound call == new
inbound thread" so that you don't get into problems. It may be that
there is some work that you can do in a single thread, but that
usually is something that a specific application optimizes.
One way to do that is to use inbound calls to "queue" work. But then
you need to use "callbacks" to notify the caller of the results of
there request, unless you design a very custom invocation layer that
allows the use of a "Future" or some other "signaling" mechanism to
control when the result is sent back to the caller.
Gregg Wonderly
Elijah Menifee wrote:
I myself have started to play with NIO for prototyping a replacement
server
system for my company's software. While doing research on how to obtain
SSL/TLS connections on top of the NIO framework I came across Project
Grizzly <https://grizzly.dev.java.net/> which is a sub component of
the new
GlassFish server, as such it is dual licensed under CDDLv1 and GPLv2
(ClassPath exception for some parts listed at bottom of GlassFish
license<https://glassfish.dev.java.net/public/CDDL+GPL.html>
).
IANAL so I do not know if it is license compatible or not. If it is
it may
provide a good frame work for a low level threaded NIO server to
implement
Jini protocols on top of. My understanding is that there has been
work done
to get its transport layer to work for the Glassfish ORB. This includes
IIOP, not sure if it also includes RMI-IIOP, or how hard it would be
to get
the RMI-IIOP on top of their IIOP transport layer. ( I found this info
at Grizzly
Terminology
Blog<http://blogs.sun.com/harshag/entry/grizzly_1_7_0_terminology>).
I am currently evaulating it as a base server to implement my
company's
protocols on top of. Also it has been a while since I worked with Jini
technology (1.2.1), I assume it still uses RMI, and do not know if it
was
ever changed to support RMI-IIOP....But from what I have read it
should be
possible to implement custom protocols on top of Grizzly transport
layer.
Although it has been fun learning the NIO framework, and building a
basic
threaded high-performance server has been a learning experience I am
still
only prototyping the next revision of our software. If I can get
Grizzly to
work with its SSL layer and worker thread management running our async
protocol and business logic I plan to pitch it to the other owners as
the
technology to use for the next major rewrite. I believe it would be a
better
solution than us maintaining our own low-level threaded NIO server,
thus we
only would have to maintain our protocol, business-logic, and
presentation
layers...
P.S. According to the FSF GPLv3 is license compatible with the v2 Apache
License, so if the Kerberos stuff can be upgraded to GPLv3 (
sometimes the
license on software states or a later version..., or if they choose to
relicense it under GPLv3) it should be compatable.
On Fri, Jul 3, 2009 at 11:41 PM, Peter Firmstone <[email protected]>
wrote:
...
After that I'd like to play around with NIO and DEFLATE compression for
serialization and http classserver performance improvements.
I recently stumbled across a complete Java implementation of Kerberos
Server and client software, I'm thinking there may be benefits for
River
running with a default authorisation setup, however it's GPL2, so
I'd have
to ask if it can be relicensed first.
Cheers,