2013-08-03 3 views
0

У Servlet 3.0 есть отличная возможность: я могу получить доступ к статическим ресурсам в JAR, используя папку META-INF/resources. Поэтому, если у меня есть javascript внутри моего JAR, я могу получить доступ, используя http://myurl.com/myapp/myjavascript.js. Замечательно. Но ... Как получить этот файл из банки, чтобы манипулировать им или что-то сделать с ним?Получить файл в JAR с помощью Servlet 3.0 Tomcat

ответ

1

Просто используйте ServletContext#getResourceAsStream() обычным способом, чтобы получить InputStream его:

InputStream input = getServletContext().getResourceAsStream("/META-INF/javascript.js"); 

Что касается Вашего намерения манипулировать им, забыть об этом. Этот resoure не доступен для записи. В принципе, вам нужно извлечь весь JAR, манипулировать записью, переупаковать JAR и предоставить заказному загрузчику классов, чтобы перезагрузить его и сообщить контейнеру о его использовании. Даже если вы преуспеете в этом, все изменения будут потеряны после перераспределения WAR или в определенных конфигурациях, даже если вы просто перезапустите сервер, по той простой причине, что эти изменения не содержатся в исходной WAR.

Вы идете по неправильному пути решения конкретных функциональных требований. Я рекомендую сделать шаг назад и задать новый вопрос о том, как решить конкретное конкретное функциональное требование, для которого вы неправильно подумали, что это будет правильным решением.

+0

Спасибо, ваш ответ хороший. Моя проблема заключается в следующем: я использую пакет: тег, чтобы сжать некоторые ресурсы (javascript, css), но некоторые ресурсы, которые я упаковал в JAR, и я хотел бы пакету, чтобы получить эти ресурсы без успеха. –

+0

Так что я хотел немного взломать исходный код packtag, и я хотел знать, как правильно обращаться к ресурсам внутри моей банки –

Смежные вопросы