Jak zmienić kontekstowy katalog główny dynamicznego projektu internetowego w Eclipse?

205

Opracowałem dynamiczny projekt internetowy w Eclipse. Mogę uzyskać dostęp do aplikacji za pośrednictwem mojej przeglądarki przy użyciu następującego adresu URL:

http://localhost:8080/MyDynamicWebApp

Chcę zmienić adres URL dostępu na:

http://localhost:8080/app

Aby to zrobić, zmieniłem kontekstowy katalog główny z projektu „Właściwości | Ustawienia projektu WWW | Kontekstowy katalog główny”. Jednak aplikacja internetowa nadal ma ten sam dostępowy adres URL. Ponownie wdrożyłem aplikację na Tomcat i ponownie uruchomiłem Tomcat, ale URL dostępu jest taki sam jak wcześniej.

Odkryłem, że do server.xmlpliku nie dołączono WARpliku. W server.xmljaki sposób Tomcat określa bez kontekstowego katalogu głównego moją aplikację internetową /MyDynamicWebAppi nie ma dostępu do aplikacji za pośrednictwem tego kontekstowego katalogu głównego?

Yatendra Goel
źródło

Odpowiedzi:

331

Jestem pewien, że już się przeprowadziłeś, ale myślałem, że i tak odpowiem.

Niektóre z tych odpowiedzi dają obejścia. To, co faktycznie musi się zdarzyć, to wyczyszczenie i ponowne opublikowanie projektu w celu „aktywacji” nowego identyfikatora URI. Odbywa się to poprzez kliknięcie serwera prawym przyciskiem myszy (w widoku Serwery) i wybranie opcji Wyczyść. Następnie uruchom (lub uruchom ponownie). Większość innych odpowiedzi tutaj sugeruje, że robisz rzeczy, które w rzeczywistości osiągają to.

Zmieniającym się plikiem jest workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datchyba, że ​​masz więcej niż jeden serwer w obszarze roboczym, w którym to przypadku będzie on publishN.datna tej samej ścieżce.

Mam nadzieję, że to komuś pomoże.


Nie jestem pewien, czy to właściwa etykieta, czy nie - edytuję tę odpowiedź, aby podać dokładne kroki dla Eclipse Indigo.

  1. We właściwościach projektu wybierz Ustawienia projektu internetowego .

  2. Zmień kontekstowy katalog główny na aplikację .

    zrzut ekranu właściwości projektu Eclipse Ustawienia Web Project

  3. Wybierz polecenie Okno> Pokaż widok> Serwery .

  4. Zatrzymaj serwer, klikając czerwony kwadrat (etykietka „Zatrzymaj serwer”) lub kliknij kontekstowo na liście serwerów, aby wybrać „Zatrzymaj”.

  5. Na serwerze, którego chcesz użyć, kliknij kontekstowo, aby wybrać „Wyczyść…”.

    wprowadź opis zdjęcia tutaj

  6. Kliknij OK w tym oknie dialogowym potwierdzenia.

    Zrzut ekranu okna dialogowego z prośbą o aktualizację konfiguracji serwera w celu dopasowania do zmienionego kontekstowego katalogu głównego

Teraz możesz uruchomić aplikację z nowym adresem URL „aplikacji”, takim jak:

http://localhost:8080/app/

Wykonanie tego poza Eclipse na serwerze produkcyjnym jest jeszcze łatwiejsze -> Zmień nazwę pliku wojny. Wyeksportuj aplikację Vaadin jako plik WAR ( Plik> Eksportuj> Internet> Plik WAR ). Przenieś plik WAR do kontenera serwletu serwera WWW, takiego jak Tomcat. Zmień nazwę pliku WAR, w tym przypadku na app.war . Po uruchomieniu kontenera serwletu większość, na przykład Tomcat, automatycznie wdroży aplikację, co obejmuje rozszerzenie pliku wojny do folderu. W takim przypadku powinniśmy zobaczyć folder o nazwie app . Powinieneś być gotowy do drogi. Sprawdź swój adres URL. W przypadku domeny takiej jak * example.com ”byłoby to:

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

Programiści Vaadin mogą potrzebować odbudować swój zestaw widżetów, jeśli korzystają z dodatków wizualnych.

Russ Bateman
źródło
Świetna odpowiedź !!! Oszczędzisz mi życie ost. Inne odpowiedzi tutaj sugerują, że robisz rzeczy, które w rzeczywistości osiągają to
AndreaNobili
Oto genialność tej odpowiedzi: poszukałem Google'a na tej stronie i nawet nie przeczytałem tagów (buduję stronę ASP.NET za pomocą Visual Studio). Ale i tak rozwiązanie zadziałało!
Curt
Nie mam takiej i opcji „Ustawienia projektu sieci Web”
IntoTheDeep,
po prostu mówiąc, że workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datjest to plik binarny, nie rozumiem, dlaczego o nim wspomniałeś, daje wrażenie, że jest to rozwiązanie problemu
aliopi,
Ale co, jeśli nie użyjemy Eclipse .. ani żadnego IDE .. Chcę programowo skonfigurować ścieżkę root kontekstu serwletu. Jak mam to zrobić? w web.xml prawdopodobnie? ..
Giorgi Tsiklauri,
32

Po zmianie kontekstowego katalogu głównego we właściwościach projektu musisz usunąć aplikację internetową z Tomcat (używając opcji Dodaj i usuń ... w menu kontekstowym serwera), ponownie wdróż, a następnie ponownie dodaj aplikację i wdróż ponownie. To zadziałało dla mnie.

Jeśli zostaniesz trafiony, masz inny wybór: wybierz serwer Tomcat w widoku Serwery. Dwukrotne kliknięcie tego serwera (lub wybranie opcji Otwórz w menu kontekstowym) powoduje wyświetlenie edytora wielostronicowego na stronie Moduły. Tutaj możesz zmienić kontekst główny swojego modułu (zwany Ścieżką na tej stronie).

Csaba_H
źródło
Dzięki! To załatwiło sprawę. działa nawet bez zmiany kontekstowego katalogu głównego we właściwościach projektu. Czy coś mi umyka?
Chris
To również działało dla mnie w poprzednich kompilacjach Eclipse, ale w bieżącej kompilacji (Luna) działa teraz tylko opcja Czyszczenia
Griknok
namasety, dhanywaada :) kiedy początkowo zmieniłem swój kontekst, nie działało nawet po ponownym uruchomieniu serwera i wyczyszczeniu. działało tylko pocztą, usunąłem projekt i przeczytałem.
Yogesh Sanchihar
24

Jeśli korzystasz z Tomcat z Eclipse, nie używa konfiguracji z faktycznej instalacji Tomcat. Wykorzystuje konfigurację Tomcat, którą utworzył i zapisał w ramach projektu „Serwery”. Jeśli przeglądasz obszar roboczy Eclipse, powinieneś zobaczyć projekt o nazwie „Serwery”. Rozwiń ten projekt „Serwery”, a zobaczysz plik server.xml. Otwórz ten plik i przewiń do samego dołu, a powinieneś zobaczyć coś takiego: -

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

Tutaj możesz po prostu zmienić ścieżkę kontekstu projektu na coś innego.

Mam nadzieję że to pomoże.

limc
źródło
Nie jestem pewien, czy chcesz zmienić wszystkie 3 wartości. Rozwiązanie Csaba_H zadziałało dla mnie i to tylko zmienia atrybut „ścieżki” ...
Chris
Ten nie działał dla mnie - pliki w tym katalogu są zastępowane po ponownym uruchomieniu serwera. Wersja druga Csaba_H, zakładka Moduły pod Tomcat Server, wydaje się być „właściwym” podejściem.
idarwin
17

Wypróbowałem rozwiązanie zaproponowane przez Russa Batemana Tutaj w poście

http://localhost:8080/Myapp do http://localhost:8080/somepath/Myapp

Ale Didnt działał dla mnie, ponieważ potrzebowałem pliku * .war, który może przechowywać konfigurację, a nie pojedynczą instancję serwera na mojej maszynie lokalnej.

Odniesienie

W tym celu potrzebuję jboss-web.xml umieszczonego w 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>
tosha Shah
źródło
To zadziałało dla mnie. Środowisko = Eclipse + m2e + m2e-wtp + wdrażanie do JBoss z widoku Serwery. Konieczne było wdrożenie głównego projektu WWW jako ROOT i żadne ustawienie Eclipse nie pomogło. Skopiowałem plik Tosha (powyżej) i umieszczam „ROOT” bez cudzysłowów jako wartość kontekstowego katalogu głównego. Gotowe i gotowe. Dzięki, @Tosha!
Steven Francolla,
To działa, ale zastanawiam się, dlaczego ignoruje ustawienie we właściwościach projektu?
Vedran
4
Współpracuje z JBoss WildFly 8.1.0 Final
Alexander
Przeprowadziłem migrację z MyEclipse 8.6 do Eclipse i nie mogłem wdrożyć z kontekstem głównym „/”. Dodawanie pliku jboss-web.xml przebiegło pomyślnie. serwer: Jboss AS 5.1 Eclipse Luna.
Sai
9

Ustawienie ścieżki na nic w oknie edycji modułów sieciowych Eclipse umożliwiło mi dostęp do projektu bez komponentu ścieżki w adresie URL (tj. ROOT)

Aby przejść do okna edycji modułów internetowych, naciśnij klawisz F3, jeśli wybierzesz Tomcat w widoku „Serwery” lub klikając go dwukrotnie.

Niektóre zrzuty ekranu:

Ray Hulha
źródło
Przepraszam, ale czy możesz podać więcej szczegółów na ten temat?
smonff,
Och dziękuje! W Eclipse Luna na GNU / Linux /wymagana jest wersja a .
smonff
1
Użyłem Eclipse Mars (4.5) na Win7.
Ray Hulha,
6

Apache tomcat utrzymuje ścieżkę kontekstu projektu w ścieżce server.xml. Dla każdego projektu internetowego w Eclipse istnieje tag, który można zmienić.
Załóżmy, że na serwerze są wdrożone dwa lub trzy projekty. Dla każdej ścieżki kontekstowej jest przechowywana. Ten znacznik znajduje się w pliku server.xml na serwerze utworzonym w środowisku eclipse.

Mam tam jeden projekt dotyczący kontekstowej ścieżki katalogu głównego na serwerze:

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

Ta ścieżka reprezentuje ścieżkę kontekstową twojej aplikacji internetowej. Po zmianie tej ścieżki zmieni się ścieżka kontekstu aplikacji internetowej.

Amar Poddar
źródło
6

Wiem, że odpowiedź została już zaakceptowana. Ale na wypadek, gdyby ktoś korzystający z Maven chciał osiągnąć to samo, po prostu ustaw parametr finalName w kompilacji maven na dowolną nazwę, którą chcesz nadać, i zrób maven -> zaktualizuj projekt

<build>
    <finalName><any-name></finalName>
    <plugins><provide-plugins-needed></plugins>
<build>
Karthik
źródło
4

Jeśli projekt to maven, zmień „finalName” w pom.xml i Update Project jako Maven. To zadziałało dla mnie.

Sudarshani Perera
źródło
2

W Glassfish musisz również zmienić plik WEB-INF / glassfish-web.xml

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

Kiedy klikniesz „Uruchom jako> Uruchom na serwerze” , otworzy się poprawnie.

Alan Weiss
źródło
Tak, musimy. Niezłe udostępnianie.
Dinath,
2

Chciałem tylko dodać, że jeśli w ogóle nie chcesz, aby nazwa twojej aplikacji była w katalogu głównym, po prostu wstaw „/” (bez cudzysłowów, tylko ukośnik) w Eclipse -> Ustawienia projektu WWW -> Kontekst Wpis główny

To wdroży aplikację internetową tylko na http: // localhost: 8080 /

Oczywiście spowoduje to problemy z innymi aplikacjami internetowymi, które próbujesz uruchomić na serwerze, więc zwróć na to uwagę.

Na zawsze mnie to poskładało ... więc nawet jeśli ten post ma 8 lat, mam nadzieję, że to jeszcze komuś pomoże!

arcademonkey
źródło
0

W projekcie Java otwórz folder .settings. zlokalizuj plik o nazwie „org.eclipse.wst.common.component”. Zmień tag <wb-module deploy-name = "NEW_NAME">.

Możesz także chcieć zmienić kontekstowy katalog główny we właściwościach projektu

użytkownik418836
źródło
wszystko to wygląda dobrze w moim projekcie i działa dobrze w ramach zaćmienia. to kiedy przekonwertuję go na plik wojenny za pomocą maven, traci on kontekst główny i zamiast localhost / events / działa na localhost /, który zrywa wszystkie moje linki
JesseBoyd 10.10.17
0

Jeśli używasz Eclipse do wdrożenia aplikacji. Możemy użyć tej wtyczki 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>

teraz przejdź do folderu głównego projektu i otwórz wiersz polecenia cmd w tej lokalizacji wpisz polecenie:

mvn eclipse: eclipse -Dwtpversion = 2.0

Konieczne może być zrestartowanie Eclipse lub w widoku serwera usuń serwer i utwórz agian, aby zobaczyć wpływ. Zastanawiam się, czy to ćwiczenie ma sens w prawdziwym życiu, ale działa.

supernowa
źródło
0

Jeśli używasz aplikacji korporacyjnej maven java ee 7/8, musisz edytować plik pom.xml projektu 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>
John M.
źródło