SNAPSHOT
Вопрос. Что значит приставка «-snapshot» в релизе «x.x.x-snapshot»?
- Ответ 1. SNAPSHOT это зафиксированное состояние в системе управления версиями. Делаются ежедневно(или еженедельно, как разработка двигается). SNAPSHOT-версии могут оказаться вовсе не рабочими
- Ответ 2. SNAPSHOT иногда означает, что это почти окончательный вариант данной версии. Что-то наподобие release candidate. Если обычная версия это полностью законченный продукт, то версии SNAPSHOT могут получать обновления, т.к. предполагается, что продукт ещё находится в стадии разработки. Более подробно можно почитать на английском SO здесь.
- Ответ 3. SNAPSHOT означает, что исходники будут дорабатываться в пределах данной версии. Условно говоря, если твоё приложение использует некую библиотеку, помеченную как SNAPSHOT, то её автор, найдя баг или просто внеся дополнительный функционал, а может и удалив что-то, может залить новый jar’ник библиотеки (артефакта), при этом не поменяв версию. Совесть автора будет чиста, а вот твоё приложение, заново потянув библиотеку из репозитория может уже не собраться.
METADATA/meta data
Вопрос. Что такое METADATA/Метаданные?
- Ответ 1. Метаданные — это субканальная информация об используемых данных.
- Ответ 2. Структурированные данные, представляющие собой характеристики описываемых сущностей для целей их идентификации, поиска, оценки, управления ими или набор допустимых структурированных описаний, которые доступны в явном виде и предназначение которых может помочь найти объект.
- Ответ 3. Термин используется в контексте поиска объектов, сущностей, ресурсов.
- Ответ 4. Данные из более общей формальной системы, заданную с описывающей свойства системы данных.
- Ответ 5. Информация о содержащейся на веб-странице свойств информации (создателе и т. п.). Пример: Имя автора правки в тексте. Этот термин в широком смысле слова используется для любой информации о данных: именах таблиц, колонок в таблице в реляционных базах данных, номер версии в файле программы (то есть как информативная часть в бинарном файле) и т. п.
WEB-INF
Вопрос. Что хранится в папке WEB-INF в проекте Java EE?
- Ответ 1. Папка WEB-INF была создана специально, что-бы разграничить файлы классов и библиотеки классов используемые приложением от остальных html, jpg и прочих файлов, к которых пользователь должен иметь прямой доступ по протоколу http.
- Ответ 2. Наличие папки WEB-INF — это одно из требований при развертке проекта Java EE:
- Контейнер сервлетов (например, Tomcat) — если вы используете Apache Tomcat, корневой каталог приложения должен быть помещен в папку webapp. Это может быть другим, если вы используете другой контейнер сервлетов или сервер приложений.
- API-интерфейс Java Servlet — Java Servlet Java Servlet API заявляет, что ваш корневой каталог приложения должен иметь следующую структуру:
ApplicationName | |--META-INF |--WEB-INF |_web.xml <-- Here is the configuration file of your web app(where you define servlets, filters, listeners...) |_classes <--Here goes all the classes of your webapp, following the package structure you defined. Only |_lib <--Here goes all the libraries (jars) your application need
- Ваш домен приложения — теперь, когда вы выполнили требования к контейнеру Servlet (или серверу приложений) и требованиям API Java Servlet, вы можете организовать другие части вашего веб-сервера на основе того, что вам нужно:
- вы можете поместить свои ресурсы (файлы JSP, текстовые файлы, файлы сценариев) в корневой каталог приложения. Но тогда люди могут обращаться к ним напрямую из своего браузера, вместо того, чтобы их запросы обрабатывались по некоторой логике, предоставленной вашим приложением. Таким образом, чтобы ваши ресурсы не были доступны напрямую, вы можете поместить их в каталог WEB-INF, содержимое которого доступно только для сервера;
- если вы используете некоторые фреймворки, они часто используют файлы конфигурации. Большинство этих фреймворков (классы, директории, …).
- Ответ 3. Вы должны помещать WEB-INF любые страницы или части страниц, которые вы не хотите публиковать. Обычно JSP или facelets находятся вне WEB-INF, но в этом случае они легко доступны для любого пользователя. Если у вас есть некоторые ограничения авторизации, для этого можно использоваться WEB-INF.
- Ответ 4. WEB-INF/lib может содержать сторонние библиотеки, которые вы не хотите упаковывать на системный уровень (JAR могут быть доступны для всех приложений, запущенных на вашем сервере), но только для этого конкретного приложения.
- Ответ 5. Что касается WEB-INF/classes — он существует в любом веб-приложении, потому что это папка, в которой размещены все скомпилированные источники (а не JARS, а скомпилированные .java-файлы, которые вы написали сами).
- Ответ 6. Вообще говоря, многие файлы конфигурации также входят в WEB-INF.
- Ответ 7. Размещение файлов в WEB-INF соблюдается по соображениям безопасности. Например, если несанкционированному лицу разрешен доступ к корневому JSP-файлу непосредственно из URL-адреса, он может перемещаться по всему приложению без какой-либо проверки подлинности и получать доступ ко всем защищенным данным.
META-INF
Вопрос. Что хранится в папке META-INF в проекте Java EE?
- Ответ 1. Вообще говоря, вы не должны вводить ничего в META-INF самостоятельно.
- Ответ 2. Следующие файлы / каталоги в каталоге META-INF распознаются и интерпретируются платформой Java 2 для настройки приложений, расширений, загрузчиков классов и служб:
- MANIFEST.MF — файл манифеста, который используется для определения данных, связанных с расширением и пакетом.
- INDEX.LIST — файл генерируется новой -iопцией «» инструмента jar, которая содержит информацию о местоположении для пакетов, определенных в приложении или расширении. Он является частью реализации JarIndex и используется загрузчиками классов для ускорения процесса загрузки классов.
- x.SF — файл подписи для файла JAR. «X» обозначает имя базового файла.
- x.DSA — Файл блока подписи, св��занный с файлом подписи с тем же именем базового файла. Этот файл хранит цифровую подпись соответствующего файла подписи.
- services/ — в этом каталоге хранятся все файлы конфигурации поставщика услуг.
- Папка META-INF — это домашний файл MANIFEST.MF . Этот файл содержит метаданные о содержимом JAR. Например, есть запись под названием Main-Class, которая указывает имя класса Java со статическим main () для исполняемых JAR-файлов.