Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> где tomcat видит WEB-INF, тока в docBase или можно класть глубже? 
:(
    Опции темы
le_chat
Дата 2.11.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



Доброго времени суток

устал биться с проблемой

вот исходные данные:
в server.xml прописан хост site.loc

Код

      <Host
          appBase="G:\Site"
          name="site.loc"
          unpackWARs="false">
          <Context path="" docBase=""/>
      </Host>
      <Host
          appBase="webapps"
          name="localhost">
      </Host>


созданы следующие директории
G:\Site\
G:\Site\webapps
G:\Site\webapps\STest
G:\Site\webapps\STest\WEB-INF\
G:\Site\webapps\STest\WEB-INF\classes
G:\Site\webapps\STest\WEB-INF\classes\stest

в G:\Site\webapps\STest\WEB-INF\ лежит следующий web.xml

Код

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
        "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
    <servlet>
        <servlet-name>STestServlet</servlet-name>
        <servlet-class>stest.STestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>STestServlet</servlet-name>
        <url-pattern>/stest</url-pattern>
    </servlet-mapping>
</web-app>


в G:\Site\webapps\STest\WEB-INF\classes\stest лежит сервлет STestServlet.class

возможно ли его там запустить? если да, то что для этого нужно прописать?

(если STest переместить в G:\Site, то все запускается через site.loc:8080/stest
было предположение что нужно поменять контекст для сервлета, то есть в G:\Site\webapps\STest\ положить директорию META-INF с файлом context.xml - но не прокатило)

PM MAIL   Вверх
Kangaroo
Дата 3.11.2006, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 14
Всего: 104



А почему:
Код

appBase="G:\Site"
 
если у тебя STest лежит в G:\Site\webapps ??





--------------------
Lost....
PM MAIL MSN   Вверх
le_chat
Дата 3.11.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



G:\Site - корень сайта, там и корневая страничка лежит, хотел настроить tomcat как http - сервер, а все приложения запихнуть поглубже в отдельную папку. Если коту сказать appBase="G:\Site\webapps" он G:\Site\index.html не откроет.
PM MAIL   Вверх
jsa
Дата 3.11.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 2
Всего: 20



может прописать в server.xml контекст приложения и все 
ссылка будет типа
http://hostname:port/webapp/


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
le_chat
Дата 3.11.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



в server.xml сейчас прописан контекст:

 <Context path="" docBase=""/>

но я так понял что к контесту приложения он отношения не имеет? Туго у меня с пониманием контекста. Как его к приложению привязять?

вообще хотел чтобы при существующем appBase, STestServlet отзывался на site.loc:8080/webapps/Stest/stest


Это сообщение отредактировал(а) le_chat - 3.11.2006, 11:28
PM MAIL   Вверх
jsa
Дата 3.11.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 2
Всего: 20



Цитата(le_chat @ 3.11.2006,  11:22)
<Context path="" docBase=""/>

это как раз и есть контекс приложения

Добавлено @ 11:38 
точнее его описалово


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
le_chat
Дата 3.11.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



но наскока я понял таких контестов можно прописать несколько. какой для какого приложения будет работать?
PM MAIL   Вверх
Kangaroo
Дата 3.11.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 14
Всего: 104



Цитата(le_chat @ 3.11.2006,  11:47)
но наскока я понял таких контестов можно прописать несколько. какой для какого приложения будет работать?

Из документации Tomcat'a:
Цитата

A Context is what Tomcat calls a web application. 

То есть для каждого приложения может быть свой контекст

Допиши:
Код

<Host
          appBase="G:\Site"
          name="site.loc"
          unpackWARs="false">
          <Context path="/webapps/STest" docBase="G:\Site\webapps\STest"/>
      </Host>

должно заработать smile


--------------------
Lost....
PM MAIL MSN   Вверх
Aazmandius
Дата 3.11.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


O_o
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 29.4.2006
Где: Vancouver

Репутация: 3
Всего: 6



достаточно лишь файла контекста, который нужно разместить в папке TOMCAT_DIR\webapps Tomcat'a, если он 4.*, либо в папке TOMCAT_DIR\conf\Catalina\localhost.

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


PM WWW   Вверх
le_chat
Дата 3.11.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



заработало  smile 

tomcat по path определяет docBase или наоборот?

Добавлено @ 16:18 
Цитата(Aazmandius @  3.11.2006,  16:01 Найти цитируемый пост)

достаточно лишь файла контекста, который нужно разместить в папке TOMCAT_DIR\webapps Tomcat'a, если он 4.*, либо в папке TOMCAT_DIR\conf\Catalina\localhost.


tomcat 5.5, в моем случае наверно будет %CATALINA_HOME%\conf\Catalina\site.loc
а имя файла играет какую нить роль?




PM MAIL   Вверх
Aazmandius
Дата 3.11.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


O_o
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 29.4.2006
Где: Vancouver

Репутация: 3
Всего: 6



нет, но желательно, чтоб совпадало с именем контекста, так понятнее ))
PM WWW   Вверх
le_chat
Дата 3.11.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



а META-INF приложения этот контекст вставить можно - или не сработает?
PM MAIL   Вверх
Aazmandius
Дата 3.11.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


O_o
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 29.4.2006
Где: Vancouver

Репутация: 3
Всего: 6



если честно - не пробовал )) никогда не возникало в этом необходимости
в доках наверняка есть, надо поискать инфу
PM WWW   Вверх
Kangaroo
Дата 4.11.2006, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 14
Всего: 104



Цитата(Aazmandius @ 3.11.2006,  16:01)
достаточно лишь файла контекста, который нужно разместить в папке TOMCAT_DIR\webapps Tomcat'a, если он 4.*, либо в папке TOMCAT_DIR\conf\Catalina\localhost.

Так у меня почему-то не получилось, поэтому и посоветовал прописать в server.xml smile
завтра еще раз попробую..
le_chat, а у тебя как заработало? 


--------------------
Lost....
PM MAIL MSN   Вверх
le_chat
Дата 4.11.2006, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



тоже не прокатило. tomcat 5.5 работает под 1.4 через пакет совместимости
однако при autoDeploy="true" и файле stest.xml в conf/Catalina/site.loc  при запуске в логе есть ошибка:

SEVERE: Error starting static Resources
java.lang.IllegalArgumentException: Document base G:\Site\stest does not exist or is not a readable directory

что наводит на мысль о том что имя файла в данном случае имеет значение по крайней мере при автодеплоинте.
мое предположение о происхождении ошибки:
так как никакого stest.war в docBase, которая указана в stest.xml не лежало, то развернуть при запуске было нечего - на что и кот и высказался

дальше разбираться завтра буду. спойкойной ночи...
PM MAIL   Вверх
le_chat
Дата 4.11.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



Цитата(le_chat @  3.11.2006,  16:10 Найти цитируемый пост)
tomcat 5.5, в моем случае наверно будет %CATALINA_HOME%\conf\Catalina\site.loc
а имя файла играет какую нить роль?


Цитата(Aazmandius @  3.11.2006,  17:21 Найти цитируемый пост)
нет, но желательно, чтоб совпадало с именем контекста, так понятнее ))


гм.. я тут в доках порылся - имя файла похоже все таки имеет значение:

вот такое написано для элемента path в описание <Context>
Код

The value of this field must not be set except when statically defining a Context 
in server.xml, as it will be infered from the filenames used for either the .xml 
context file or the docBase.


"Значение этого не должно задаваться, за исключением определения <Context> в server.xml,так как оно будет получено из имени файла .xml с контекстом или docBase"
 

Это сообщение отредактировал(а) le_chat - 4.11.2006, 11:36
PM MAIL   Вверх
Kangaroo
Дата 4.11.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 14
Всего: 104



Цитата(le_chat @ 4.11.2006,  01:27)
однако при autoDeploy="true" и файле stest.xml в conf/Catalina/site.loc  при запуске в логе есть ошибка:

SEVERE: Error starting static Resources
java.lang.IllegalArgumentException: Document base G:\Site\stest does not exist or is not a readable directory

Там еще до этой ошибки должен быть ворнинг smile :
Код

WARNING: A docBase G:\Site\webapps\stest inside the host appBase has been specified, and will be ignored

который все объясняет )
По идее должен быть другой способ запустить приложение из поддиректорий appBase smile


--------------------
Lost....
PM MAIL MSN   Вверх
le_chat
Дата 4.11.2006, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



думаю что подобный вопрос возникает у каждого кто начинает разбираться с томкэтом, поэтому подитожу что удалось выяcнить мне.
вот что сказно в документации:
Цитата

In addition to nesting Context elements inside a Host element, you can also store them:

  • in the individual $CATALINA_HOME/conf/context.xml file: the Context element information will be loaded by all webapps
  • in the individual $CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default file: the Context element information will be loaded by all webapps of that host in individual files (with a ".xml" extension) in the $CATALINA_HOME/conf/[enginename]/[hostname]/ directory
  • if the previous file was not found for this application, in individual file at /META-INF/context.xml inside the application files


но при этом:
....
Цитата

path-  The context path of this web application, which is matched against the beginning of each request URI to select the appropriate web application for processing. All of the context paths within a particular Host must be unique. If you specify a context path of an empty string (""), you are defining the default web application for this Host, which will process all requests not assigned to other Contexts. The value of this field must not be set except when statically defining a Context in server.xml, as it will be infered from the filenames used for either the .xml context file or the docBase.


Получается небольшая путаница. 
С одной стороны контекст разрешает URI в путь приложения на диске (на основании текущего path определяется docBase) - то есть определяет c каким именно приложением работать. НО ЭТО  МОЖНО ВЫПОЛНИТЬ ТОЛЬКО В ФАЙЛЕ server.xml. При этом если у вас path="" то docBase указывает на приложение по умолчанию для текущего хоста. Если не задать это приложение, то кот будет искать его в каталоге [appBase]/ROOT.
С другой стороны он задает определенные свойства среде в которой будет выполняться приложение. Этот контекст можно указать:
- для всех хостов в файле %CATALINA_HOME%/conf/context.xml,
- для приложений одного хоста в файле %CATALINA_HOME%/conf/Catalina/[host]/context.xml.default
- для одного приложения: ПапкаПриложения/META-INF/context.xml

Третье назначение контекста - указать папку на диске откуда разворачивать приложение при автодеплоинте (деплоинт приложения при старте томкэта).
такой контекст кладется в файл %CATALINA_HOME%/conf/Catalina/[host]/имяПриложения.xml
в нем указывается docBase, в котором должен лежать .war архив с именем "имяПриложения", который будет развернут в папку appBase/имяПриложения.

для томэта приложение  - это папка WEB-INF, внутри которой лежит файл web.xml
если томкэт не нашел такой папки - значит приложения нету.  smile 

собственно говоря, это все, что отложилось в моем понимании. 
может кое-какие мелочи упустил.

спасибо Aazmandius и Kangaroo за помощь решении проблемы  smile 



PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1218 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.