怎樣透過HTTP來呼叫JMS

nepalon發表於2006-08-15
我們要做的系統是一個c/s,即swing作為gui的系統,透過webstart來進行了釋出。與b/s不同,這會涉及到client端呼叫server端的介面(EJB)、服務端呼叫客戶端的介面(JMS的MessageListener)的問題。
EJB預設用的是Rmi-iiop協議的,透過HttpTunnel可以實現透過Http協議來進行了遠端呼叫。實現原理其實就是在Client端透過動態代理來攔截EJB呼叫,把相應的呼叫資訊傳送到在Server端的一個Servlet中,再在這個Servlet中來呼叫Server中的具體EJB。
但這隻處理了EJB的遠端呼叫問題,JMS的還沒有處理。我們的系統server端註冊了在client端的MessageListener用於重新整理GUI的訊息列表。此時如果開了防火牆且遮蔽了EJB的相應埠(如只開了80埠),那麼就不能呼叫到相應的MessageListener了。現在想象遠端呼叫EJB那樣實現一個可以透過HTTP來呼叫JMS的Tunnel,不知有沒有人實現過?
有個商業軟體JProxy實現了這樣的功能,但是是要收費的。
如果有人做過,原理是怎樣的?有沒有開源的或現成的程式碼?
多謝!

相關文章