У Servlet 3.0 есть отличная возможность: я могу получить доступ к статическим ресурсам в JAR, используя папку META-INF/resources. Поэтому, если у меня есть javascript внутри моего JAR, я могу получить доступ, используя http://myurl.com/myapp/myjavascript.js. Замечательно. Но ... Как получить этот файл из банки, чтобы манипулировать им или что-то сделать с ним?Получить файл в JAR с помощью Servlet 3.0 Tomcat
ответ
Просто используйте ServletContext#getResourceAsStream()
обычным способом, чтобы получить InputStream
его:
InputStream input = getServletContext().getResourceAsStream("/META-INF/javascript.js");
Что касается Вашего намерения манипулировать им, забыть об этом. Этот resoure не доступен для записи. В принципе, вам нужно извлечь весь JAR, манипулировать записью, переупаковать JAR и предоставить заказному загрузчику классов, чтобы перезагрузить его и сообщить контейнеру о его использовании. Даже если вы преуспеете в этом, все изменения будут потеряны после перераспределения WAR или в определенных конфигурациях, даже если вы просто перезапустите сервер, по той простой причине, что эти изменения не содержатся в исходной WAR.
Вы идете по неправильному пути решения конкретных функциональных требований. Я рекомендую сделать шаг назад и задать новый вопрос о том, как решить конкретное конкретное функциональное требование, для которого вы неправильно подумали, что это будет правильным решением.
- 1. index.html not rendering servlet 3.0 Tomcat 7
- 2. Реализация JSTL 1.2.1 в контейнере Servlet 3.0 на Tomcat 7
- 3. горячего развертывания JSP, в веб-фрагмента с помощью Eclipse, и Tomcat (Servlet 3.0)
- 4. Загрузка изображений с помощью Servlet 3.0
- 5. JAR Файл не загружается в Tomcat
- 6. Apache Velocity + Servlet 3.0
- 7. Servlet 3.0 и JAX-RS
- 8. Вход в систему в Servlet 3.0 с помощью аннотаций
- 9. Использование Servlet 3.0 с Weblogic 10.3
- 10. Использование Felix в сервере Servlet 3.0 (например, Tomcat 7)
- 11. Как tomcat загружает файл jar?
- 12. resteasy + tomcat servlet container 3.0 + guice not working
- 13. Передать аргумент Tomcat Servlet
- 14. SSE и Servlet 3.0
- 15. Tomcat Servlet и MySQL
- 16. Tomcat Servlet Path
- 17. Java Servlet 3.0 и @WebServlet
- 18. Как узнать, поддерживает ли Tomcat Servlet 3.0 или нет?
- 19. SBT, Jetty и Servlet 3.0
- 20. Servlet 3.0 асинхронный
- 21. Доступные версии Servlet 3.0?
- 22. Servlet 3.0 и ресурсы
- 23. Servlet .jar Dependency Null Pointer
- 24. Guice Servlet с встроенным Tomcat
- 25. Servlet - как получить zip-файл
- 26. Basic Tomcat Servlet ошибка
- 27. Async DeferredResult Long Polling Ошибка IllegalStateException с помощью Servlet 3.0 Tomcat 7
- 28. Объединение Arquillian, JUnit, Servlet 3.0 и Weld
- 29. Servlet-Apache Tomcat
- 30. Servlet 3.0 загрузить файл (@MultipartConfig) с вложенным причалом
Спасибо, ваш ответ хороший. Моя проблема заключается в следующем: я использую пакет: тег, чтобы сжать некоторые ресурсы (javascript, css), но некоторые ресурсы, которые я упаковал в JAR, и я хотел бы пакету, чтобы получить эти ресурсы без успеха. –
Так что я хотел немного взломать исходный код packtag, и я хотел знать, как правильно обращаться к ресурсам внутри моей банки –