2009-08-06 109 views
1

我有一個Web應用程序:MyApp.war,它裏面,我有一個jar文件:WEB-INF/lib/PublicJar.jar即成從戰爭文件中的jar文件(作爲資源)

  • 我想客戶端應用程序是能夠像網絡資源一樣下載該jar文件。 e.g http://theserver.com/myapp/jars/PublicJar.jar

  • 我想要的Web應用程序能夠計算的jar文件 的哈希碼看它是否已經改變,所以客戶知道它是否需要重新加載它。

可以這樣做嗎?

回答

3

WEB-INF內的資源無法直接提供給客戶端。如果你想這樣做,你需要編寫一個servlet /控制器來將其解壓縮爲一個ServletContext資源並將其提供給http響應。

PublicJar.jar也被你的應用程序本身使用?難道你不能將它從WEB-INF中移出,或者可能在WAR中綁定它的兩個副本,一個在WEB-INF下(用於內部應用程序使用),另一個用於下載?

+0

PublicJar.jar被應用程序使用,因爲它會加載資源(如果它通過spring的資源加載器classpath:public/resource.xml)。實際上PublicJar.jar只包含資源 - 它只是一個將它們全部保存爲自包含單元的jar。 – Justin 2009-08-06 16:03:05

+0

在這種情況下,將jar移出WEB-INF,Spring仍然可以使用ServletContextResource加載。一旦離開WEB-INF,客戶將能夠直接訪問它。 – skaffman 2009-08-06 16:07:26

+0

謝謝!春季資源加載器完全幫助。我使用servlet方法,因爲我已經爲客戶端使用HttpInvoker,所以我添加了一個服務方法:byte [] readPublicJar() - quick + dirty。如果PublicJar變得很大,我將不得不將它移動到servlet上下文,而不是從servlet中讀取它。 – Justin 2009-08-06 22:19:24