I've been using JGN with JME for a while when recently I started getting truncated UDP messages. They would fail to deserialize on the reader side, killing the connection.
After a bunch of debugging I tracked the problem down to the UDPMessageServer. This reads data using the DatagramChannel into a local buffer, but this buffer is only 5K. The datagram being sent was larger than this (in theory up to about 64K -- max size for UDP) after being assembled by the PacketCombiner. According to the javadoc for the DatagramChannel's read() method:
If there are more bytes in the datagram than remain in the given buffer then the remainder of the datagram is silently discarded.
Digging a bit deeper, I think there may be a problem on the writer side as well. The write() method uses the DatagramChannel to send the entire buffer created by the PacketCombiner which (if I'm reading this correctly) could be up to 512K. But the max size for a datagram is 64K and according to the Java I/O book:
On the other hand, if you try to send more data from a buffer than can fit into a single datagram, the send( ) method sends nothing and returns 0. send( ) will not fragment the data into multiple UDP packets: it writes everything or nothing. You're probably okay up to 8K of data on a modern system, and you may be okay somewhat beyond that. However, 64K (indeed, a little less than that when space for IP headers and such is set aside) is the absolute maximum that can ever fit into one UDP datagram.