Как изменить корневой контекст динамического веб-проекта в Eclipse?

187

Я разработал динамический веб-проект в Eclipse. Теперь я могу получить доступ к нему через свой браузер, используя следующий URL-адрес:

http://localhost:8080/MyDynamicWebApp

Теперь я хочу изменить URL-адрес доступа на

http://localhost:8080/app

Я изменил корень контекста из проекта "Свойства | Настройки веб-проекта | Корень контекста".

Но он не работает. Веб-приложение по-прежнему имеет URL-адрес доступа, как ранее. Я повторно развернул приложение на Tomcat, перезапустил Tomcat и сделал все, что нужно сделать, но URL-адрес доступа такой же, как раньше.

Я обнаружил, что не было файла server.xml, прикрепленного к файлу WAR. Затем, как Tomcat определяет, что корень контекста моего веб-приложения /MyDynamicWebApp и позволяет мне получить доступ к приложению через этот URL?

Теги:
java-ee
applicationcontext

11 ответов

318
Лучший ответ

Я уверен, что ты уже перешел, но я думал, что все равно ответю.

Некоторые из этих ответов дают обход. Что на самом деле должно произойти, так это то, что вы очищаете и повторно публикуете свой проект, чтобы "активировать" новый URI. Это делается щелчком правой кнопкой мыши на вашем сервере (в представлении "Серверы") и выборе "Очистить". Затем вы запускаете (или перезапускаете его). Большинство других ответов здесь показывают, что вы делаете то, что по сути делает это.

Файл, который изменяется, - это workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.dat, если только у вас не более одного сервера в вашем рабочем пространстве, и в этом случае он будет publishN.dat на том же пути.

Надеюсь, это поможет кому-то.


Не уверен, что это правильный этикет или нет. Я редактирую этот ответ, чтобы дать точные шаги для Eclipse Indigo.

  1. В своем проекте "Свойства" выберите "Настройки веб-проекта".

  2. Измените "Корень контекста" на "приложение".

    Изображение 6827

  3. Выберите "Окно"> "Показать вид"> "Серверы".

  4. Остановите сервер, нажав на квадрат красного квадрата (всплывающая подсказка "Остановить сервер") или щелкните контекстно-клик по списку серверов, чтобы выбрать "Остановить".

  5. На сервере, который вы хотите использовать, щелкните контекстно-клик, чтобы выбрать "Очистить...".

    Изображение 6828

  6. Нажмите OK в этом диалоговом окне подтверждения.

    Изображение 6829

Теперь вы можете запустить приложение с новым URL-адресом приложения, например:

http://localhost:8080/app/

Выполнение этого вне Eclipse на вашем рабочем сервере еще проще → Переименуйте файл войны. Экспортируйте ваше приложение Vaadin в качестве файла WAR (Файл> Экспорт> Веб> WAR файл). Переместите файл WAR в контейнер сервлета веб-сервера, такой как Tomcat. Переименуйте свой WAR файл, в данном случае в "app.war". Когда вы запускаете контейнер сервлета, большинство таких, как Tomcat, будут автоматически развертывать приложение, которое включает в себя расширение военного файла в папку. В этом случае мы должны увидеть папку с именем "приложение". Тебе должно быть хорошо. Проверьте свой URL. Для домена, такого как example.com, это будет:

http://www.example.com/app/

Программистам инструментария Vaadin, возможно, придется перестроить их набор виджета, если использовать визуальные дополнения.

  • 0
    Отличный ответ !!! Вы спасаете мою жизнь. Остальные ответы здесь предлагают вам сделать то, что в действительности выполняет эту задачу.
  • 0
    Вот гениальность этого ответа: я гуглил свой путь к этой странице и даже не читал теги (я создаю сайт ASP.NET с использованием Visual Studio). Но решение сработало в любом случае!
Показать ещё 4 комментария
29

После изменения корня контекста в свойствах проекта вы должны удалить свое веб-приложение из Tomcat (с помощью Add and Remove... в контекстном меню сервера), повторно развернуть, а затем повторно добавить свое приложение и повторно развернуть. Это сработало для меня.

Если вы поражены, у вас есть другой выбор: выберите сервер Tomcat в представлении "Серверы". Двойной щелчок на этом сервере (или выбор "Открыть" в контекстном меню) содержит многостраничный редактор, в котором есть страница "Модули". Здесь вы можете изменить корневой контекст своего модуля (это называется "Путь" на этой странице).

  • 0
    Спасибо! Это помогло мне. однако он работает даже без изменения корневого контекста в свойствах проекта. Я что-то здесь упускаю?
  • 0
    Это также работало для меня в предыдущих сборках Eclipse, но в текущей сборке (Luna) теперь работает только опция Clean
23

Если вы используете Tomcat из Eclipse, он не использует конфигурацию из вашей фактической установки Tomcat. Он использует конфигурацию Tomcat, которая была создана и сохранена в проекте "Серверы" . Если вы просмотрите рабочее пространство Eclipse, вы должны увидеть проект под названием "Серверы" . Разверните этот проект "Серверы" , и вы столкнетесь с server.xml. Откройте этот файл и прокрутите до конца, и вы увидите что-то вроде этого: -

<Context docBase="abc" path="/abc" reloadable="true" source="org.eclipse.jst.jee.server:abc"/>

Здесь вы можете просто изменить свой контекст контекста проекта на что-то еще.

Надеюсь, что это поможет.

  • 0
    Я не уверен, что вы хотите изменить все 3 значения. Решение Csaba_H работает для меня, и это только меняет атрибут "путь" ...
  • 0
    Это не помогло мне - файлы в этом каталоге перезаписываются при перезапуске сервера. Вторая версия Csaba_H, вкладка Modules под Tomcat Server, выглядит как «правильный» подход.
17

Я опробовал решение, предложенное Русом Бэйтманом. Здесь в сообщении

http://localhost:8080/Myapp до http://localhost:8080/somepath/Myapp

Но Didnt работал у меня, поскольку мне нужен файл *.war, который может содержать конфигурацию, а не отдельный экземпляр сервера на моем локальном компьютере.

Ссылка

Для этого мне нужен jboss-web.xml, размещенный в WEB-INF

<?xml version="1.0" encoding="UTF-8"?>
 <!--
Copyright (c) 2008 Object Computing, Inc.
All rights reserved.
-->
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">

  <jboss-web>
  <context-root>somepath/Myapp</context-root>
  </jboss-web>
  • 0
    Это сработало для меня. Окружающая среда = Eclipse + m2e + m2e-wtp + развертывание в JBoss из представления Серверы. Нужно было развернуть основной веб-проект как ROOT, и никакие настройки Eclipse не помогли. Я скопировал файл Тоши (выше) и поместил "ROOT" без кавычек в качестве значения контекста-корня. Сделано и сделано. Спасибо, Тоша!
  • 0
    Это работает, но мне интересно, почему он игнорирует настройки в свойствах проекта?
Показать ещё 2 комментария
6

Настройка пути к нишу в диалоговом окне редактирования веб-модулей Eclipse позволила мне получить доступ к проекту без какого-либо компонента пути в URL-адресе (например, ROOT)

Вы можете попасть в диалоговое окно редактирования веб-модулей, нажав F3, если вы выберите Tomcat в представлении "Серверы" или дважды щелкнув по нему.

Некоторые скриншоты:

Изображение 6830 Изображение 6831 Изображение 6832

  • 0
    Извините, но не могли бы вы рассказать об этом подробнее?
  • 1
    Конечно, я отредактировал оригинальный ответ.
Показать ещё 2 комментария
6

Я знаю, что ответ уже принят. Но, на всякий случай, если кто-либо, используя Maven, хочет достичь того же, просто установите finalName в maven build для любого имени, которое вы хотите дать, и выполните maven → обновить проект

<build>
    <finalName><any-name></finalName>
    <plugins><provide-plugins-needed></plugins>
<build>
6

Apache tomcat поддерживает путь контекста проекта в пути server.xml. Для каждого веб-проекта на Eclipse есть метка оттуда, вы можете изменить его.
Предположим, на сервере есть два или три проекта. Для каждого одного контекстного пути хранится. Этот тег находится в файле server.xml внутри сервера, созданного на eclipse.

У меня есть один проект для корневого пути контекста на сервере:

<Context docBase="Test" path="/test" reloadable="true" source="org.eclipse.jst.jee.server:Test1"/>

Этот путь представляет собой путь контекста вашего веб-приложения. Изменив этот путь, ваш контекст контекста веб-приложения изменится.

4

Если проект является maven, измените "finalName" в pom.xml и обновите проект как Maven.This работал у меня.

2

В Glassfish вы также должны изменить файл WEB-INF/glassfish-web.xml

<glassfish-web-app>
    <context-root>/myapp</context-root>
</glassfish-web-app>

Итак, когда вы нажмете "Запуск от имени > Запуск на сервере" , он откроется правильно.

  • 0
    Да, мы должны. Приятно делиться.
0

Если вы используете eclipse для развертывания вашего приложения. Мы можем использовать этот плагин maven

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <wtpversion>2.0</wtpversion>
        <wtpContextName>newContextroot</wtpContextName>
    </configuration>
</plugin>

теперь перейдите в корневую папку проекта и откройте приглашение cmd в этом месте введите следующую команду:

mvn eclipse: eclipse -Dwtpversion = 2.0

Вам может потребоваться перезапустить eclipse или сервер удаления сервера на сервере и создать агиан, чтобы увидеть аффект. Мне интересно, что это упражнение имеет смысл в реальной жизни, но работает.

0

В проекте java откройте папку .settings. найдите файл с именем "org.eclipse.wst.common.component". Изменить тег < wb-module deploy- name= "NEW_NAME" > .

Также вы можете изменить корень контекста в свойствах проекта

  • 0
    все, что хорошо выглядит в моем проекте и работает в затмении просто отлично. это когда я конвертирую его в файл war, используя maven, он теряет свой корневой контекст и вместо localhost / events / работает на localhost /, который разрывает все мои ссылки

Ещё вопросы

Сообщество Overcoder
Наверх
Меню