tomcat 5.5 настройка контекстного пути с виртуальными хостами (каталог без веб-приложений)

Я был веб-разработчиком в течение нескольких лет (немного ASP, в основном PHP) и недавно занялся Java/JSP за последние два года.

Единственное, что я пробовал неоднократно, но по-прежнему не могу понять, это способ настроить работающее JSP-приложение в другом месте, которое НЕ является папкой веб-приложений. Вывод моего приложения из веб-приложений не кажется мне проблемой.

Может ли кто-нибудь помочь сломать это или указать мне, чтобы опубликовать где-нибудь, где это описано?

Я неоднократно гуглил, читал и перечитывал документацию на веб-сайте apache.org, но все еще не могу ее понять :(

Я пытаюсь настроить "взорванный" сайт (папки и файлы разделены - не являются частью WAR).

Я знаю, что МОГУ редактировать файл server.xml, но не должен (не то чтобы это имело значение... даже когда я пытаюсь отредактировать это, у меня ничего не получается).

Я знаю, что мне что-то не хватает в том, как работают пути. Я ДУМАЛ, что понимаю, но я так не думаю.

Любая помощь очень ценится!

Люблю этот сайт.

-- Я решил перефразировать свой вопрос более подробно --

Допустим, у меня есть следующая структура каталогов (**ПРИМЕЧАНИЕ: веб-проект НЕ находится в каталоге tomcat/webapps)

/webproject
/webproject/htdocs
/webproject/htdocs/images
/webproject/htdocs/images/logo.gif
/webproject/java
/webproject/java/page1.jsp
/webproject/java/page2.jsp 

Я хочу настроить виртуальный хост, чтобы я мог просматривать свой проект по URL-адресу: http://webproject

Я ДУМАЮ, что все, что мне нужно, это две вещи (я использую apache):

  1. запись «VirtualHost» в моем файле httpd.conf.
  2. какой-то тип «контекстного» файла или фрагмента где-то.

Я прав? Если да, может ли кто-нибудь помочь мне определить эти два элемента?

Кроме того, если я хочу использовать URL-адрес, относящийся к домену, для ссылки на мой файл logo.gif с любой из моих страниц jsp, как будет выглядеть мой путь?

Что делать, если я хочу использовать URL-адрес, относящийся к домену, для ссылки на page2.jsp из page1.jsp?


person TJ.    schedule 10.02.2010    source источник


Ответы (2)


ОДНАКО, если в моем приложении есть пути, которые ссылаются на ресурсы (изображения, сценарии и т. д.), используя путь, который начинается в корне (например, img src="/htdocs/images/foo.gif"), это не так. найдено.

Знаете ли вы, что эти пути должны быть URL-адресами относительно текущего URL-адреса запроса (одного из страницы JSP) и, следовательно, не пути файловой системы локального диска относительно их местоположения в файловой системе локального диска? ? Поскольку вы используете /htdocs, похоже, что вы думали о последнем.

Таким образом, если JSP-страница, например, запрашивается http://example.com/context/page.jsp, а foo.gif фактически доступна http://example.com/context/images/foo.gif, то вам необходимо использовать URL-адрес, относящийся к странице:

<img src="images/foo.gif">

или URL-адрес, относящийся к домену:

<img src="/context/images/foo.gif">

или URL-адрес, относящийся к протоколу:

<img src="//example.com/context/images/foo.gif">

или абсолютный URL:

<img src="http://example.com/context/images/foo.gif">
person BalusC    schedule 10.02.2010
comment
Спасибо за помощь. Мое использование htdocs было плохим примером, потому что я знаю, что эта папка обычно используется в отношении локальных файловых систем для доставки веб-страниц. Однако в данном случае это не так (вините в этом стандарты кодирования моего клиента). Итак, я использую URL-адрес, относящийся к домену. - person TJ.; 11.02.2010
comment
Сказав это... ваше использование термина "контекст" во всех примерах URL-адресов - это то, что, как мне кажется, мне не хватает. Таким образом, даже с использованием htdocs, я думаю, мой URL-адрес должен быть: /context/htdocs/images/foo.gif Далее, НУЖНО ли мне использовать контекст? Или я могу каким-то образом настроить URL-адрес, относящийся к домену, без контекста? т.е. /htdocs/images/foo.gif? ТРЕБУЕТСЯ ли Tomcat контекст? - person TJ.; 11.02.2010
comment
Вам просто нужно убедиться, что относительный URL-адрес соответствует ее абсолютному местоположению по сравнению с URL-адресом запроса родительской страницы. Изучите приведенные выше примеры URL еще раз. Если вы все еще застряли, опубликуйте абсолютный URL-адрес (таким образом, URL-адрес, который вы видите в адресной строке браузера) как JSP-страницы, так и файла изображения, тогда я расскажет, как должен выглядеть относительный URL-адрес изображения при использовании на странице JSP. - person BalusC; 11.02.2010
comment
Я попытался перефразировать свой вопрос... Я действительно хочу поблагодарить вас BalusC за ваше время. Я копаю попугая. - person TJ.; 11.02.2010

ОК, после борьбы с этим я, наконец, заставил его работать. Я не говорю, что это лучший (или даже правильный!) способ сделать это, но это то, что в конечном итоге сработало для меня локально на моем компьютере с Windows (с WAMP) и на удаленном сервере с Linux.

Перечисленные пути находятся там, где они были для моей среды. Очевидно, что это может быть другим для вашей ситуации.

ПЕРЕД ПЕРВЫМ (только для Windows)

В Windows вам необходимо настроить запись в файле hosts для нового «домена».

WIN - C:\Windows\System32\drivers\etc\hosts

127.0.0.1 webproject.local

ПЕРВЫЙ

Нужно отредактировать httpd.conf и добавить виртуальный хост

ВЫИГРЫШ - C:\wamp\bin\apache\Apache2.2.11\conf\extra\httpd-vhosts.conf

LINUX — /etc/httpd/conf/httpd.conf

 <VirtualHost *:80>
     DocumentRoot "C:\wamp\www\webproject"
     ServerName webproject.local
 </VirtualHost>

ВТОРОЕ

Настройте хост и контекст в файле server.xml. Из того, что я читал в Интернете, редактирование server.xml не рекомендуется, но это был единственный способ понять это.

WIN — C:\Program Files (x86)\Apache Software Foundation\Tomcat 5.5\conf\server.xml

LINUX — etc/tomcat5/server.xml

<Host name="webproject" debug="0" appBase="webapps" unpackWARs="true">
   <Context path="" docBase="C:/wamp/www/webproject"/>
   <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="webproject.local_error-log." suffix=".txt" timestamp="true"/>
</Host>

Я не думаю, что это правильно, но у меня сработало использование «webapps» в качестве базы приложений, хотя мои файлы не находятся в папке «webapps». Не уверен, почему это работает... Я боюсь, что это одна из тех ситуаций, когда это работает, хотя и не должно. Я надеюсь, что кто-то намного умнее меня может предложить некоторое понимание.

person TJ.    schedule 26.02.2010