Not many J2ME devices can listen for incoming messages and then act on them (a.k.a. receive a push).
You'll mostly be limited to devices which support something like JSR 205.
The MessageListener interface provides a mechanism for the application to be notified of incoming messages.
When an incoming message arrives, the notifyIncomingMessage() method is called. The application MUST retrieve the message using the receive() method of the MessageConnection. MessageListener should not call receive() directly. Instead, it can start a new thread which will receive the message or call another method of the application (which is outside of the listener) that will call receive().
William Frantz
http://sprintdevelopers.com