According to the book I'm reading:
Knudsen, "Kicking Butt with MIDP and MSA," You might find the missing information in MIDP's
javax.microedition.io package -- The Generic connection framework.
I think
JSR 120 is just telling you that when you use the Generic connection framework phones that support Jsr-120
should also have these protocols implemented for you to use: SMS, USSD, and CBS -- whether they actually are or if there are implementation bugs on some brands of phones (since you said someone claims it isn't possible) is an issue which I can't really help you with.
Now, I don't want to give away the whole book, but I'm reminded of an example in Ch. 6 in the book about starting MIDlets automatically through responding to network connections with the Push registry:
6.1 Responding to Network Connections
...
Three peices of information are needed to register a MIDlet in the push registry::
[*] A connection string represents an incoming network connection. You'll learn all about connection strings in Chapter 18, but you'll see some examples in this chapter. A connection string that represents incoming SMS messages on port 50,000 is sms://:50000.
[*] A class name describes the MIDlet that should be launched to handle the network connection.
[*] The last item is a string representing allowed senders. You can use wildcards in this string, so if you are interested in all incoming network connections from any address, use *.
There are two ways to create an entry in the push registry Dynamic registration occurs when the MIDlet is running. Static registration occurs when the MIDlet suite is installed.
... (Dynamic)
For instance, here is how to register PushyMIDlet to respond to incoming SMS network connections on port 50,000 from any sender: