title: Suggestions for particular client-server system
body: <p>I have a quite specific client-server design case and I want to ask for
  suggestions. The task is about enhancing an existing system with new
  functionality.<br>
  The system is composed of a server with public IP, 10 -
  1000 CLDC clients with dynamic IP, and a device that
  communicates with the server over the serial port (COM).<p>
  <b>Client(J2ME):</b><br>
  Logs into the server and stays logged in, spontaneously asks
  server for some data, but mainly waits for server requests. The client is
  (probably, first thought) responsible for keeping the connection with server
  alive.<p>
  <b>Server (preferably windows, Java):</b><br> Waits for clients to
  connect, stores and maintains all client connections (in case the server
  wanted to send a request to the client, as clients have dynamic IP
  addresses). The server stores data coming from the COM device. Waits for
  requests from clients and provides them with desired (previously stored)
  data. It also waits for COM device requests.<p>
  <b>COM device:</b><br> Provides the server with
  data (this is the data that clients spontaneously ask for). It also sends
  requests (server should pass those requests to particular clients). The COM
  device drives the whole system.</p>
  
  <p>What I need to design is the server and software for clients. Serial device
  is unchangeable.</p>
  
  <p>Do you have any suggestions for the best approach here?<br></p>
  
  <p>Regards!</p>