Получить реальный путь к файлу для ресурса в Tomcat - PullRequest
1 голос
/ 19 октября 2011

В моем веб-приложении в Tomcat 7 я получаю ресурс в приложении, используя servletContext.getResource("file.xml").Это возвращает URL-адрес в форме jndi:/localhost/app/file.xml.

Однако, поскольку мне нужно передать этот файл в библиотеку, которая может принимать только реальные пути к файлам (я думаю, что он имеет встроенный скрипт Ruby), этот URL-адрес выигралне делают.

Есть ли способ получить реальный путь к файлу?Я знаю, что это сделает приложение неспособным запускаться из WAR, но это нормально.

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

Я бы использовал File#createTempFile().

File file = File.createTempFile("style", ".less");
// ...
0 голосов
/ 19 октября 2011

У меня очень грязный обходной путь:

        // 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

Я мог бы ускорить это с помощью некоторого кэширования / контрольной суммы, но это не очень красиво.

...