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


205

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

http://localhost:8080/MyDynamicWebApp

Я хочу изменить URL доступа на:

http://localhost:8080/app

Для этого я изменил корневой контекст из проекта «Свойства | Настройки веб-проекта | Корневой контекст». Тем не менее, веб-приложение по-прежнему имеет тот же URL-адрес доступа. Я повторно развернул приложение на Tomcat и перезапустил Tomcat, но URL доступа такой же, как и раньше.

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

Ответы:


331

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

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

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

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


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

  1. В свойствах вашего проекта выберите « Настройки веб-проекта» .

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

    снимок экрана со свойствами проекта Eclipse Настройки веб-проекта

  3. Выберите « Окно»> «Показать представление»> «Серверы» .

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

  5. На сервере, который вы хотите использовать, щелкните правой кнопкой мыши, чтобы выбрать «Очистить…».

    введите описание изображения здесь

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

    Снимок экрана: диалоговое окно с просьбой обновить конфигурацию сервера в соответствии с измененным корневым контекстом

Теперь вы можете запустить свое приложение с новым URL "app", таким как:

http://localhost:8080/app/

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

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

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


Отличный ответ !!! Вы спасаете мою жизнь. Остальные ответы здесь предлагают вам сделать то, что, по сути, выполняет это
AndreaNobili

Вот гениальность этого ответа: я гуглил свой путь к этой странице и даже не читал теги (я создаю сайт ASP.NET с использованием Visual Studio). Но решение все равно сработало!
Курт

У меня нет такой и опция "Настройки веб-проекта"
IntoTheDeep

просто говоря, что workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datэто бинарный файл, я не понимаю, почему вы упоминаете его там, это дает впечатление, что это решение проблемы
aliopi

Но что, если мы не используем Eclipse .. или любую IDE .. Я хочу программно настроить корневой путь контекста сервлета. Как мне это сделать? в web.xml наверное? ..
Георгий Циклаури

32

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

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


Спасибо! Это помогло мне. однако он работает даже без изменения корневого контекста в свойствах проекта. Я что-то здесь упускаю?
Крис

Это также работало для меня в предыдущих сборках Eclipse, но в текущей сборке (Luna) теперь работает только опция Clean
Griknok

namasety, dhanywaada :), когда я изначально изменил свой контекст, он не работал даже после перезапуска и очистки сервера. сработало только сообщение, я удалил проект и перечитал.
Йогеш Санчихар

24

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

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

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

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


Я не уверен, что вы хотите изменить все 3 значения. Решение Csaba_H работает для меня, и это только меняет атрибут «путь» ...
Крис

Это не помогло мне - файлы в этом каталоге перезаписываются при перезагрузке сервера. Вторая версия Csaba_H, вкладка Modules под Tomcat Server, кажется «правильным» подходом.
Иарвин

17

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

http://localhost:8080/Myapp в http://localhost:8080/somepath/Myapp

Но он не работал для меня, так как мне нужно было иметь файл * .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>

Это сработало для меня. Окружение = Eclipse + m2e + m2e-wtp + развертывание в JBoss из представления Серверы. Нужно было развернуть основной веб-проект как ROOT, и никакие настройки Eclipse не помогли. Я скопировал файл Тоши (выше) и поместил "ROOT" без кавычек в качестве значения контекста-корня. Сделано и сделано. Спасибо, Тоша!
Стивен Франколла

Это работает, но мне интересно, почему он игнорирует настройки в свойствах проекта?
Ведран

4
Работает с JBoss WildFly 8.1.0 Final
александр

Я мигрировал из MyEclipse 8.6 в Eclipse и не смог развернуться с корневым контекстом '/'. Добавление jboss-web.xml сработало успешно. сервер: Jboss AS 5.1 Eclipse Luna.
Сай

9

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

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

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


Извините, но не могли бы вы рассказать об этом подробнее?
Smonff

о, спасибо! В Eclipse Luna в GNU / Linux /требуется a .
Smonff

1
Я использовал Eclipse Mars (4.5) на Win7.
Рэй Хулха

6

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

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

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

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


6

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

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


2

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

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

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


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

2

Я просто хотел добавить, что если вы вообще не хотите, чтобы имя вашего приложения находилось в корневом контексте, вы просто помещаете «/» (без кавычек, только косая черта) в Eclipse -> Настройки веб-проекта -> Контекстная корневая запись

Это позволит развернуть веб-приложение только по адресу http: // localhost: 8080 /.

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

Взял меня навсегда, чтобы собрать это вместе ... так что, хотя этому посту 8 лет, надеюсь, это все равно кому-нибудь поможет!


0

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

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


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

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>

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

mvn eclipse: eclipse -Dwtpversion = 2.0

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


0

При использовании приложения maven java ee 7/8 для предприятий необходимо отредактировать pom.xml проекта EAR

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <webModule>
                        <groupId>com.sample</groupId>
                        <artifactId>ProjectName-web</artifactId>
                        <contextRoot>/myproject</contextRoot>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.