2013-03-09 72 views
0

我正在開發一個應用程序,使用JAVA EE 6,更具體地說,Glassfish v3.1.2.2。JAVA EE 6集羣和webapp圖像

之前,我習慣把用戶uploded圖像和文件在我的數據庫。如果我想通過添加節點將我的體系結構集羣化,這將使它更容易。

現在,我真的想停止這樣做,只是我上傳的文件保存到我的資源文件夾(原因是多方面的such as this),這樣一個簡單的<img><h:graphicImage>一個名字就可以了。

我的問題是怎麼做,當我添加其他的服務器這項工作?該文件將只保存到處理該請求的服務器資源文件夾中,其他服務器不會擁有它。

現在也許有人會建議使用分佈式文件系統,你在哪裏租你的應用程序一些託管/雲服務這聽起來除了在大的情況下,你不能真正選擇自己的文件系統。 (可能有其他原因阻止您轉到此設置)

是否JAVA EE提供了透明地同步資源文件夾的方法? JSF已經可以處理它的版本控制和管理庫等任何機會,我可以設置一些配置,這樣我的所有服務器都可以通過任何文件更改/上傳保持資源文件夾的最新狀態?

如果不是,有什麼替代方案?

+0

我還沒有跟團的工作我自己,但是從我讀可能是最好的選擇是在一個專用的服務器(通常是Apache的,因爲它被認爲是快) – SJuan76 2013-03-09 23:35:33

+0

你有一個雲服務的一個例子,設置靜態資源讓你運行你的應用程序集羣,但是沒有任何實際的節點間通信方式?這聽起來像是有些武斷的限制。 (另外,我認爲一個流行的 - 如果可能是不必要的昂貴 - 解決方案就是將它們放到S3或其他類型的CDN上,這些CDN應該提供某種API來上傳新文件。) – millimoose 2013-03-09 23:55:56

+0

作爲毫無保留的狀態,我也會選擇對於像Amazon S3這樣的[Content Delivery Network](http://en.wikipedia.org/wiki/Content_delivery_network)解決方案(免責聲明:我不以任何方式與亞馬遜合作)。 – 2013-03-10 00:36:42

回答

0

的Java EE並沒有提供一種方式,用於集羣的公共文件夾同步您的圖片,你的應用服務器可以支持的東西這一點,但我不知道在任何應用服務器這樣的解決方案。

根據您的情況我會用一個NFS服務器,並保持從所有羣集訪問的NFS服務器目錄中的文件。

如果你不能改變你的硬件設置,那麼你可以創建一個web服務器來託管資源,你可以從所有的集羣訪問您的資源,如,

<h:graphicImage value="http://myimageserver.local.com/sitename/foldername/xyz.gif"/>所有羣集中。

+1

如果不使用某種形式的分佈式文件系統OP,不想使用分佈式文件系統,那麼當集羣節點在不同的機器上運行時(如同標準用例)那樣,你將如何去做? – fvu 2013-03-09 23:45:53

+0

如果我的節點運行在不同的機器或虛擬環境中,我無法創建符號鏈接。 – arg20 2013-03-09 23:47:54

+0

我不知何故錯過了你的帖子,你沒有使用dsitributed系統或NFS。我猜資源服務器是你的選擇。 – 2013-03-09 23:51:19