Контейнеры для сервлетов и путь к классам - PullRequest
10 голосов
/ 20 ноября 2008

Для чего нужен путь класса набора контейнеров сервлетов?

Согласно моему пониманию, здесь задействованы три компонента. Файлы JAR в каталоге lib контейнера Servlet, а затем классы в файлах WEB-INF/classes и JAR в каталоге WEB-INF/lib. Классы в каталоге lib контейнера сервлета добавляются в системный путь к классам, а динамический путь к классам включает в себя файлы JAR в каталоге lib и классы в каталоге classes.

Для чего задан динамический путь к классам? Указывает ли динамический путь к классам все каталоги в WEB-INF или включает в себя все отдельные классы и файлы JAR в WEB-INF/lib и WEB-INF/classes или просто указывает на два каталога WEB-INF/classes и WEB-INF/lib? Скажем, у меня есть каталог с именем foo в WEB-INF, содержащий bar.properties. bar.properties также находится в пути к классам?

Ответы [ 2 ]

7 голосов
/ 20 ноября 2008

«Динамический» classpath будет перечислять WEB-INF/classes, каждый файл JAR под WEB-INF/lib как отдельную запись. Другие папки в WEB-INF не включены.

В вашем примере bar.properties не будет на пути к классам. Переместите его в WEB-INF/classes или поместите в файл JAR под WEB-INF/lib.

То, что находится в остальной части пути к классам, зависит от вашего контейнера сервлета. Это зависит от реализации, но у большинства контейнеров есть два других места для размещения классов. Один - это каталог, видимый для контейнера, но не для приложений, а другой - для контейнера и всех приложений. Поскольку второй ClassLoader виден всем приложениям, static члены этих классов могут использоваться для обмена информацией между приложениями.

2 голосов
/ 20 ноября 2008

В вашем примере bar.properties должен находиться в каталоге классов, чтобы находиться в пути к классам.

...