2009-10-31 24 views
2

好的。所以我有一個用Java編寫的CMS,可以滿足幾百個客戶的需求。但是定期地,客戶需要一個專門的應用程序:例如,一個類註冊數據庫應用程序。Java框架 - 使用屏幕抓取來異構服務器環境

所以,假設我不想寫,或者我太忙了。所以我把它外包給其他人,但我不希望他/她的代碼在我的服務器上,因爲他/她使用我的服務器環境不支持的語言進行編碼。所以我讓開發者在別的地方的廉價服務器上託管它。但我仍然希望應用程序出現在我客戶的主網站上(由我的CMS託管)在CMS客戶主域上的模板中。

我該如何做到這一點?我可以使用某種類型的攔截客戶端請求的屏幕截取器/代理,將它們傳遞給呈現HTML的外部服務器,然後將他/她的HTML集成到我的模板中?在真正的交互式應用程序中,我將如何處理後續請求?

所以這就是我想要做的(我認爲)。有沒有人有這種類型的事情的任何見解或經驗?什麼是陷阱?有沒有產品可以輕鬆做到這一點?

+0

經過更多的研究,我認爲我需要實現一個反向代理。有沒有人有實施反向代理的經驗? – 2009-10-31 02:43:27

回答

1

Filter,你會在你的web.xml中其中攔截匹配您想外包的特定類型的請求配置。然後該過濾器可以使用Commons HttpClient向外部系統發出實際請求。然後,您只需將回復直接傳回給用戶。基本上你正在構建一個自定義的HTTP代理。您甚至可以添加內容裝飾(可能是常見的標題,檢查出SiteMesh),安全性,URL重寫等等。您可能想要支持緩存來抵消代理請求的性能損失。

如果您需要支持會話,它會變得更加經濟,但您可能通過將JSESSIONID值傳遞給您的合作伙伴並添加一些會話複製機制來實現。例如,您可以提供一個採用sessionId並返回序列化會話對象以供合作伙伴使用的Web服務。

0

創建一個iframe,以在您的網頁中顯示該應用程序。

+0

沒有,這將無法正常工作。首先是可用性問題。但更重要的是,我需要使用cookie或認證機制來保存狀態/身份。 – 2009-10-31 01:56:44

0

您可以查看Open Social這是Google允許您將應用程序添加到他們的平臺(Orkut,iGoogle和某些擴展Wave)的方式。 Shindig是Open Social容器的Java實現,您可以使用它作爲CMS的Open Server框架的服務器端位。

1

一個選項是使用WSRP彙總頁面。這基本上是一個Web服務,它包含所使用的服務(portlet)的UI。

它將解決許多您將面對的問題(URL重寫等),因此從教育的角度來看,它可能是值得的。我不確定WSRP和非Java/.Net棧的情況如何,儘管谷歌搜索表明有一些工作正在進行。