Як змінити контекстний корінь динамічного веб-проекту в 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. У цьому діалоговому вікні підтвердження натисніть кнопку ОК.

    Знімок екрана діалогового вікна із проханням оновити конфігурацію сервера, щоб вона відповідала зміненому корінню контексту

Тепер ви можете запустити додаток за допомогою нової URL-адреси "app", наприклад:

http://localhost:8080/app/

Робити це поза Eclipse, на виробничому сервері, ще простіше -> Перейменуйте файл війни. Експортуйте додаток Vaadin у файл WAR ( Файл> Експорт> Веб> WAR-файл ). Перемістіть файл WAR до контейнера сервлетів вашого веб-сервера, такого як Tomcat. Перейменуйте свій файл WAR, в даному випадку - на app.war . Коли ви запускаєте контейнер сервлетів, більшість таких, як Tomcat, автоматично розгортать додаток, що включає розширення файлу війни до папки. У цьому випадку ми повинні побачити папку з назвою додаток . Вам слід добре піти. Перевірте свою URL-адресу. Для домену, такого як * example.com, це буде:

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

Програмістам інструментарію Vaadin може знадобитися відновити набір віджетів, якщо використовувати візуальні додатки.


Чудова відповідь !!! Ви врятуєте моє життя, не з інших відповідей тут, пропонуючи робити ті дії, які фактично цього досягають
AndreaNobili

Ось геніальність цієї відповіді: я переглянув цю сторінку і навіть не прочитав теги (я будую веб-сайт ASP.NET за допомогою Visual Studio). Але рішення все одно спрацювало!
Curt

У мене немає такого і опція "Налаштування веб-проекту"
IntoTheDeep

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

Але що робити, якщо ми не використовуємо Eclipse .. або будь-який IDE .. Я хочу програмно налаштувати кореневий шлях контексту сервлетів. Як мені це зробити? в web.xml напевно? ..
Giorgi

32

Після зміни кореня контексту у властивостях проекту потрібно видалити веб-додаток з Tomcat (використовуючи «Додати та видалити ...» у контекстному меню сервера), повторно розгорнути, а потім повторно додати свою програму та повторно застосувати. Це працювало для мене.

Якщо вас вразило, у вас є інший вибір: виберіть сервер Tomcat у вікні Сервери. Двічі клацнувши на цьому сервері (або вибравши Відкрити у контекстному меню), він відкриє редактор багатосторінкових сторінок, де є сторінка Модулі. Тут ви можете змінити кореневий контекст свого модуля (на цій сторінці називається Шлях).


Дякую! Це зробило для мене трюк. однак це працює навіть без зміни коріння контексту у властивостях проекту. Я щось тут пропускаю?
Кріс

Це також працювало для мене в попередніх збірках 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 працювало на мене, і це лише змінює атрибут "path" ...
Кріс,

Цей для мене не працював - файли в цьому каталозі перезаписуються при перезапуску сервера. Версія другої версії Csaba_H, вкладка Модулі під сервером Tomcat, виглядає як "правильний" підхід.
idarwin

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 не зробила цього. Я скопіював файл Tosha (вгорі) і помістив "ROOT" sans quotes як значення контексту-root. Зроблено і зроблено. Дякую, @Tosha!
Стівен Франколла

Це працює, але мені цікаво, чому він ігнорує налаштування у властивостях проекту?
Ведран

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, /хоча, потрібно.
smonff

1
Я використовував Eclipse Mars (4.5) на Win7.
Рей Хулха

6

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

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

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

Цей шлях відображає контекстний шлях вашого веб-додатку. Змінивши цей шлях, зміниться контекстний шлях вашого веб-додатка.


6

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

<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>

Тож при натисканні кнопки "Запустити як> Запустити на сервері" вона відкриється правильно.


Так, ми повинні. Приємний обмін.
Dinath

2

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

Це дозволить розгорнути webapp просто на http: // localhost: 8080 /

Звичайно, це спричинить проблеми з іншими веб-переглядачами, які ви намагаєтеся запустити на сервері, тож виправдайте це.

Мене назавжди взяли на себе, щоб поділити це разом ... тому, хоча цій посаді 8 років, сподіваємось, це все одно комусь допоможе!


0

У проекті java відкрийте папку .settings. там знайдіть файл під назвою "org.eclipse.wst.common.component". Змінити тег <wb-module expand-name = "NEW_NAME">.

Також ви можете змінити корінь контексту у властивостях проекту


все, що добре виглядає на моєму проекті, і воно працює добре. коли я конвертую його у файл війни за допомогою Maven, він втрачає свій корінний контекст, а замість localhost / події / він працює на 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>

тепер перейдіть до кореневої папки проекту та відкрийте підказку cmd у цьому місці, введіть цю команду:

mvn eclipse: eclipse -Dwtpversion = 2,0

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