As much of the communication package as possible should be replaced with a standard network library. This should improve maintainability and provide more flexibility.
Key features required:
- Client/Server networking over TCP.
- Support for java serialisation.
- Server side acceptor framework that manages connections and network events a scalable manner.
- Reaping of stale connections.
- Open source license.
- Actively maintained.
Nice to have (if the base layer doesn't do it, we'll need to maintain the current implementation):
- Ability to use a pair of InputStream/OutputStream as a transport.
- Addressable connections; a server can identify client connections by some meta data and target messages to specific clients.
Nice to have:
- Options for payload marshalling.
I'm going to look hard at Apache MINA to start with.