I ended up using the Netty framework instead. It was simpler to get working since all I needed was to send simple DTOs over the network.
FYI, the only gotcha was that MaxMSP uses a special classloader, but fortunately Netty allows you to tell it what classloader to use when instantiating the ObjectDecoder object.