Google App Engine WEB-INF и META-INF

Когда вы создаете новый проект веб-приложения с помощью подключаемого модуля Google-Eclipse, он создает для вас всю структуру каталогов проекта, включая:

src/
    META-INF/
        jdoconfig.xml
        persistence.xml
war/
    WEB-INF/
        lib/
        web.xml
        ...etc.

Во-первых, я понял, что META-INF/ предназначен только для служебных JAR-файлов, а не для веб-приложений (WAR). Поэтому появление src/META-INF/* в проекте застало меня врасплох. Но потом я видел примеры веб-приложений GAE, которые упаковываются следующим образом:

TheWebApp.war/
    WEB-INF/
        lib/
        classes/
            META-INF/
        web.xml
        ...
    blah.jsp
    ...etc/

С WEB-INF/classes/META-INF/! Вдобавок я не вижу никаких упоминаний о проектах GAE и каталоге MANIFEST.MF, который я всегда вижу в пакете под META-INF. Теперь я очень запутался.

Поэтому я думаю, что сначала мне нужно подтверждение / разъяснение роли META-INF и WEB-INF в целом, затем понять, как их можно использовать вместе в WAR любого веб-приложения, а затем понять любые особенности ( если они существуют), которые GAE размещает в своих структурах WAR.

Примечание. Я не использую Maven и не собираюсь использовать его как минимум в ближайшие 6–12 месяцев (у меня просто нет времени изучать его прямо сейчас). Поэтому, если какие-либо ответы на эти вопросы зависят от того, используете ли вы Buld на основе Maven или нет, я бы предпочел ответы, отличные от Maven, поскольку я использую Ant / Ivy.

Поэтому я спрашиваю:

  1. Каково нормальное содержимое каталога META-INF для служебных (библиотечных) файлов JAR, исполняемых файлов JAR и WAR? Нужен ли MANIFEST.MF для WAR (как GAE, так и не GAE), почему или почему нет?
  2. Где я должен размещать не веб-ресурсы, чтобы они были доступны для пути к классам среды выполнения? Например, скажем, у меня есть environment.properties или _13 _... куда мне их положить? В WEB-INF/, WEB-INF/classes, WEB-INF/classes/META-INF? Где-нибудь еще?
  3. Каково правильное содержимое каталогов WEB-INF и META-INF проекта GAE и как правильно их упаковать?

Заранее спасибо.


person IAmYourFaja    schedule 29.01.2013    source источник


Ответы (1)


Как и каталоги META-INF файла JAR, каталог / META-INF корневого уровня содержит файл манифеста приложения. Он также может содержать ресурсы для определенных веб-контейнеров или серверов приложений. Например, Apache Tomcat ищет и использует файл context.xml в этом каталоге, чтобы помочь настроить развертывание приложения в Tomcat.

В отличие от файлов JAR, каталог / META-INF корневого уровня не находится в пути к классам приложения. Вы не можете использовать ClassLoader для получения ресурсов в этом каталоге. Однако / WEB-INF / classes / META-INF находится в пути к классам. Вы можете разместить в этом каталоге любые ресурсы приложения, которые захотите, и они станут доступны через ClassLoader.

person Koray Tugay    schedule 17.07.2014