在Tomcat中获取资源的真实文件路径

时间:2011-10-18 22:29:24

标签: tomcat servlets jndi

在我在Tomcat 7中的Web应用程序中,我使用servletContext.getResource("file.xml")在应用程序中获取了一个资源。这将返回jndi:/localhost/app/file.xml形式的网址。

但是,因为我需要将这个文件传递给一个只接受真实文件路径的库(我认为它有一个嵌入式Ruby脚本),URL不会这样做。

有没有办法获得真正的文件路径?我知道这会使应用程序无法从WAR运行,但没关系。

2 个答案:

答案 0 :(得分:0)

我有一个非常脏的解决方法:

        // get resource
        URL resU = servletContext.getResource("style.less");

        // get scratch dir
        File workDir = (File) servletContext.getAttribute("javax.servlet.context.tempdir");

        // copy resource to scratch file
        File newFile = new File(workDir, "style.less");
        Files.write(Resources.toByteArray(resU), newFile); // Google Guava

我应该能够通过一些缓存/校验和加快速度,但它并不漂亮。

答案 1 :(得分:0)

我会使用File#createTempFile()

File file = File.createTempFile("style", ".less");
// ...