请问一个Java Socket异步长连接客户端编程有关问题

请教一个Java Socket异步长连接客户端编程问题
小弟现在有一个应用,   是从WEB   通过Socket连接到一个Sockct   服务端(SMS),   通过约定好的格式协议来发请求和接受结果,   然后在WEB上将结果解析并显示出来.   Socket服务端对我们WEB这边只允许建立一个Socket连接.   也就是说,   服务端提供的是一条异步长连接.  

整个连接过程到WEB显示,   我用短连接每次访问重新建立连接然后断开的方式测试通过了.   当然,   会存在竞争问题...   我也想用长连接的方式,   但我遇到的难点是,   每个WEB用户的请求可以无差别的通过一个独立Proxy程序来发送到SMS端,   但SMS返回的信息(每个请求在协议中都有RequestID的标识编号)我怎么把结果从Proxy程序返回到当初发出这个请求的WEB用户会话线程呢?   Proxy程序和SMS端建立和维持一个异步长连接,   它肯定是一个单线程的程序,   可以接收任何多线程的请求,   这个接受是无差别的,   只管往SMS发就是了,   但是返回的时候就应该有选择的返回给请求线程了.  

我就是这个问题困绕了我好久,   在网上查了几天也没有找到什么有意义的资料.   希望能在这里得到专业的解答,   谢谢了~~



------解决方案--------------------
我也是这个问题..
------解决方案--------------------
可不可以象jms那样,建立一个中间的消息值,每个接收socket的程序根据requestid进行消息的过滤