Well BlazeDS is a very nice bridge between Flex applications and Java. It's a framework which will let you do RPC calls (Async if you do a long-polling or use a real time streaming protocol, or synchronous).

It's all done over HTTP, where your clients subscribe to a Topic. You write your Java adapter more or less like you would configure a servlet, then expose an interface that flash can invoke. There's a tool called Gas3 (graniteds.org), maven plugin available, which will generate you ActionScript classes from your Java pojos, allowing you to marshall these objects across the stream you want to use. The only limitation with Gas3 is that it does not support enumerations yet, but it's nice to deal with objects when you're passing them around.

I haven't tested it with a tunneled connection, but I'm sure it's possible as well.