Java 从war文件中提供jar文件(作为资源)

Java 从war文件中提供jar文件(作为资源),java,web-applications,jar,war,Java,Web Applications,Jar,War,我有一个web应用程序:MyApp.war,在它里面,我有一个jar文件:web-INF/lib/PublicJar.jar 我希望客户端应用程序能够像下载web资源一样下载jar。 e、 ghttp://theserver.com/myapp/jars/PublicJar.jar 我希望web应用程序能够计算jar文件的哈希代码,以 查看它是否已更改,以便客户端知道是否需要重新加载它 可以这样做吗?WEB-INF中的资源不能直接提供给客户端。如果要这样做,需要编写一个servlet/控制器

我有一个web应用程序:MyApp.war,在它里面,我有一个jar文件:
web-INF/lib/PublicJar.jar

  • 我希望客户端应用程序能够像下载web资源一样下载jar。 e、 g
    http://theserver.com/myapp/jars/PublicJar.jar

  • 我希望web应用程序能够计算jar文件的哈希代码,以 查看它是否已更改,以便客户端知道是否需要重新加载它


可以这样做吗?

WEB-INF中的资源不能直接提供给客户端。如果要这样做,需要编写一个servlet/控制器,将其提取为
ServletContext
资源,并将其提供给http响应


PublicJar.jar
是否也由应用程序本身使用?您能不能将它移出
WEB-INF
,或者在战争中捆绑两个副本,一个在
WEB-INF
(供内部应用程序使用)下,另一个用于下载?

PublicJar.jar由应用程序使用,因为它会加载资源(通过spring的资源加载器类路径:public/resource.xml)。事实上,PublicJar.jar只包含资源——它只是一个将它们作为自包含单元保存在一起的jar。在这种情况下,将jar移出WEB-INF,Spring仍然能够使用ServletContextResource进行加载。一旦退出WEB-INF,客户端将能够直接访问它。谢谢!spring资源加载器帮了大忙。我使用servlet方法,因为我已经为客户端使用了HttpInvoker,所以我添加了一个服务方法:byte[]readPublicJar()-quick+dirty。如果PublicJar变得很大,我将不得不将其移动到servlet上下文中,而不是从servlet中读取它。