+1  A: 

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
Thanks for answer Paul. So you think that application server like tomcat or glassfish is not needed here? What I'm affraid of is the number of open connections. Is socket server application running on winodows capable of keeping 1000 open connections?
Most definitely! see http://stackoverflow.com/questions/2185834/maximum-number-of-socket-in-javaYou could use an application server and implements your own sockets. I would not suggest HTTP/s as it is inherently stateless. Check out JBoss jetty and Apache MINA, they are really useful socket/connection libraries.
Paul
@Paul: You meant JBoss netty, right? Btw I also recommend netty..
Enno Shioji
Yes... Sorry... netty.. jetty... lol. I mean Netty.
Paul
Thanks for your help Paul! Regards!
unfortunately, not using HTTP for client-server communication means you're risking the client mobile network operator filtering out the client connections.
QuickRecipesOnSymbianOS