J2ME
I have developed many systems involving J2ME and a backend. The one thing you need to watch out for is that the client connection that the server holds may not always be "open" because GPRS/3G is not very reliable (depending on the service provider/country). So you are right that the client is responsible for keeping the connection open.
Server
In general you can treat this like a normal multi threaded socket server.
On a windows system (assuming you programming in java) have a look at opening a java.io.File to a file name "COM1" in order to communicate with your serial device. This will make your life much easier instead of truing to do native serial communication.
It seems pretty straight forward so i am not sure what one can suggest.
Paul
2010-02-28 18:33:48