我正在编写一个调用jar中函数的java servlet。我无法控制这个jar中的代码。被调用的函数需要配置文件的文件名作为参数。
我想将此文件与我的war文件捆绑在一起。如果我把它放在某个地方的战争中,我可以在jar中传递函数的文件名吗?
请注意,只有文件名可以与jar的API一起使用。所以ServletContext.getResourceAsStream()
没有帮助。
答案 0 :(得分:3)
使用ServletContext.getRealPath()
。这将返回给定servlet上下文资源的文件系统路径。您传递的参数与传递给ServletContext.getResourceAsStream()
更好的是,使用Spring的资源抽象:
Resource resource = new ServletContextResource(servletContext, "/path/to/file");
File resourceFile = resource.getFile();
答案 1 :(得分:1)
如果它在您的.war文件中,您将无法将其作为文件访问。一些servlet容器会将.war文件分解为组件,但我认为你不能依赖它。
您是否考虑过将其解压缩(通过getResourceAsStream()
),将其写入临时文件/目录,然后引用它?