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

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

http://localhost:8080/MyDynamicWebApp

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

http://localhost:8080/app

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

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

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

14 ответов

Решение

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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 может потребоваться перестроить набор виджетов при использовании визуальных надстроек.

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

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

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

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

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

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

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

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 позволила мне получить доступ к проекту без какого-либо компонента пути в URL (т. Е. ROOT)

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

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

https://i.imgur.com/ZS6IQvI.png https://i.imgur.com/GjGUDOc.png https://i.imgur.com/7szhGA2.png

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

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

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

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

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

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

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

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

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

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

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

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

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

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

У меня есть альтернативный ресурс ... Но программно можно будет изменить файл server.xml с вашего сервера ...

Так конфигурируется реальный проект .... измените путь в контексте.

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

В проекте Java откройте папку.settings. там найдите файл с именем "org.eclipse.wst.common.component" . Изменить тег .

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

При использовании корпоративного приложения 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>

Если вы используете 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 или в представлении сервера удалить сервер и создать agian, чтобы увидеть эффект. Интересно, это упражнение имеет смысл в реальной жизни, но работает.

Другие вопросы по тегам