Come modificare la root di contesto di un progetto Web dinamico in Eclipse?


205

Ho sviluppato un progetto web dinamico in Eclipse. Posso accedere all'app tramite il mio browser utilizzando il seguente URL:

http://localhost:8080/MyDynamicWebApp

Voglio cambiare l'URL di accesso in:

http://localhost:8080/app

Per fare ciò, ho modificato la root di contesto dal progetto "Proprietà | Impostazioni progetto Web | Radice di contesto". Tuttavia, l'app Web ha ancora lo stesso URL di accesso. Ho ridistribuito l'applicazione su Tomcat e riavviato Tomcat, ma l'URL di accesso è lo stesso di prima.

Ho scoperto che non c'era nessun server.xmlfile allegato con il WARfile. Senza il server.xmlfile allegato, in che modo Tomcat sta determinando la root di contesto della mia app Web /MyDynamicWebAppe mi consente di accedere all'applicazione tramite questo URL di root di contesto?

Risposte:


331

Sono sicuro che ormai sei passato, ma ho pensato di rispondere comunque.

Alcune di queste risposte offrono soluzioni alternative. Ciò che realmente deve accadere è che tu pulisca e ripubbidi il tuo progetto per "attivare" il nuovo URI. Questo viene fatto facendo clic con il pulsante destro del mouse sul server (nella vista Server) e selezionando Pulisci. Quindi si avvia (o si riavvia). La maggior parte delle altre risposte qui suggeriscono di fare cose che in effetti ottengono questo risultato.

Il file che sta cambiando è a workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datmeno che tu non abbia più di un server nell'area di lavoro, nel qual caso lo saràpublishN.dat sullo stesso percorso.

Spero che questo aiuti qualcuno.


Non sono sicuro che si tratti di un'etichetta corretta o no - sto modificando questa risposta per fornire i passaggi esatti per Eclipse Indigo.

  1. Nelle proprietà del progetto , selezionare Impostazioni progetto Web .

  2. Cambia root di contesto in app .

    schermata delle proprietà del progetto Eclipse Impostazioni progetto Web

  3. Scegli Finestra> Mostra vista> Server .

  4. Arrestare il server facendo clic sulla casella quadrata rossa (descrizione comando "Arresta il server") oppure fare clic con il pulsante destro del mouse sull'elenco del server per scegliere "Interrompi".

  5. Sul server che si desidera utilizzare, fare clic con il tasto destro del mouse per scegliere "Pulisci ...".

    inserisci qui la descrizione dell'immagine

  6. Fai clic su OK in questa finestra di dialogo di conferma.

    Schermata della finestra di dialogo che chiede di aggiornare la configurazione del server in modo che corrisponda alla radice del contesto modificata

Ora puoi eseguire la tua app con il nuovo URL "app" come:

http://localhost:8080/app/

Farlo al di fuori di Eclipse, sul server di produzione, è ancora più semplice -> Rinomina il file di guerra. Esporta l'app Vaadin come file WAR ( File> Esporta> Web> File WAR ). Spostare il file WAR sul contenitore servlet del server Web come Tomcat. Rinomina il tuo file WAR, in questo caso in app.war . Quando si avvia il contenitore servlet, la maggior parte come Tomcat distribuirà automaticamente l'app, che include l'espansione del file di guerra in una cartella. In questo caso, dovremmo vedere una cartella denominata app . Dovresti essere bravo ad andare. Metti alla prova il tuo URL. Per un dominio come * esempio.com "questo sarebbe:

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

I programmatori Vaadin toolkit potrebbero aver bisogno di ricostruire il loro set di widget se utilizzano componenti aggiuntivi visivi.


Bella risposta !!! Mi salvi la vita ost delle altre risposte qui che suggerisci di fare cose che in effetti
ottengono

Ecco il genio di questa risposta: ho cercato su Google questa pagina e non ho nemmeno letto i tag (sto costruendo un sito Web ASP.NET utilizzando Visual Studio). Ma la soluzione ha funzionato comunque!
Curt

Non ho tale opzione e l'opzione "Impostazioni progetto Web"
IntoTheDeep

workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datsto solo dicendo che si tratta di un file binario, non capisco perché lo menzioni lassù, dà l'impressione che sia la soluzione al problema
aliopi,

Ma cosa succede se non utilizziamo Eclipse .. o qualsiasi IDE .. Voglio configurare a livello di programmazione il percorso principale del contesto servlet. Come devo farlo? in web.xml probabilmente? ..
Giorgi Tsiklauri il

32

Dopo aver modificato la root di contesto nelle proprietà del progetto, è necessario rimuovere l'applicazione Web da Tomcat (utilizzando Aggiungi e Rimuovi ... nel menu di scelta rapida del server), ridistribuire, quindi aggiungere nuovamente l'applicazione e ridistribuire. Ha funzionato per me.

Se sei colpito hai un'altra scelta: seleziona il server Tomcat nella vista Server. Facendo doppio clic su quel server (o selezionando Apri nel menu contestuale) viene visualizzato un editor multipagina in cui è presente una pagina Moduli. Qui puoi cambiare il contesto di root del tuo modulo (chiamato Path in questa pagina).


Grazie! Questo ha fatto il trucco per me. tuttavia, funziona anche senza modificare la radice del contesto nelle proprietà del progetto. Mi sto perdendo qualcosa qui?
Chris,

Questo funzionava anche per me nelle precedenti build di Eclipse ma nella build corrente (Luna) ora funziona solo l'opzione Clean
Griknok

namasety, dhanywaada :) quando inizialmente ho cambiato il mio contesto, non ha funzionato anche dopo il riavvio e la pulizia del server. ha funzionato solo post, ho rimosso il progetto e pronto.
Yogesh Sanchihar

24

Se stai eseguendo Tomcat da Eclipse, non utilizza la configurazione della tua installazione Tomcat effettiva. Utilizza la configurazione Tomcat che ha creato e archiviato nel progetto "Server". Se visualizzi l'area di lavoro di Eclipse, dovresti vedere un progetto chiamato "Server". Espandi quel progetto "Server" e ti imbatterai in server.xml. Apri questo file e scorri fino in fondo, e dovresti vedere qualcosa del genere: -

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

Qui, puoi semplicemente cambiare il percorso del contesto del tuo progetto in qualcos'altro.

Spero che questo ti aiuti.


Non sono sicuro che tu voglia cambiare tutti e 3 i valori. La soluzione di Csaba_H ha funzionato per me e questo cambia solo l'attributo "percorso" ...
Chris

Questo non ha funzionato per me: i file in quella directory vengono sovrascritti al riavvio del server. La versione due di Csaba_H, scheda Moduli in Tomcat Server, sembra l'approccio "giusto".
idarwin,

17

Ho provato la soluzione suggerita da Russ Bateman Qui nel post

http://localhost:8080/Myapp per http://localhost:8080/somepath/Myapp

Ma Didnt ha funzionato per me poiché avevo bisogno di avere un file * .war che potesse contenere la configurazione e non la singola istanza del server sulla mia macchina locale.

Riferimento

Per fare ciò ho bisogno di jboss-web.xml inserito in 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>

Questo ha funzionato per me. Ambiente = Eclipse + m2e + m2e-wtp + distribuzione su JBoss dalla vista Server. Necessario distribuire il progetto Web principale come ROOT e nessuna impostazione di Eclipse ha funzionato. Ho copiato il file Tosha (sopra) e ho inserito "ROOT" senza virgolette come valore di contesto. Fatto e fatto. Grazie, @Tosha!
Steven Francolla,

Funziona, ma mi chiedo perché ignori l'impostazione nelle proprietà del progetto?
Vedran,

4
Funziona con JBoss WildFly 8.1.0 Final
alexander

Sono migrato da MyEclipse 8.6 a Eclipse e non sono riuscito a distribuire con il contesto root '/'. L'aggiunta di jboss-web.xml ha funzionato correttamente. server: Jboss AS 5.1 Eclipse Luna.
Sai,

9

L'impostazione del percorso su nulla nella finestra di dialogo di modifica dei moduli Web di Eclipse mi ha permesso di accedere al progetto senza alcun componente di percorso nell'URL (ovvero ROOT)

Puoi accedere alla finestra di modifica dei moduli web premendo F3 se selezioni Tomcat nella vista "Server" o facendo doppio clic su di esso.

Alcuni screenshot:


Ci dispiace ma puoi fornire maggiori dettagli al riguardo?
smonff

Oh grazie! Su Eclipse Luna su GNU / Linux, tuttavia /è richiesto un.
smonff,

1
Ho usato Eclipse Mars (4.5) su Win7.
Ray Hulha,

6

Apache tomcat mantiene il percorso di contesto del progetto nel percorso server.xml. Per ogni progetto web su Eclipse, c'è un tag da lì che puoi cambiarlo.
Supponiamo che ci siano due o tre progetti distribuiti sul server. Per ogni contesto è memorizzato il percorso. Questo tag si trova sul file server.xml all'interno del server creato su eclipse.

Ho un progetto per lì sul percorso root di contesto nel server è:

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

Questo percorso rappresenta il percorso di contesto dell'applicazione Web. Modificando questo percorso, cambierà il percorso di contesto dell'app Web.


6

So che la risposta è già stata accettata. Ma, nel caso in cui qualcuno che utilizza Maven desideri ottenere la stessa cosa, imposta il FinalName nella build maven su qualsiasi nome tu voglia dare e faccia un maven -> aggiorna progetto

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

4

Se il progetto è finito, cambia "finalName" in pom.xml e aggiorna il progetto come Maven. Questo ha funzionato per me.


2

In Glassfish è inoltre necessario modificare il file WEB-INF / glassfish-web.xml

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

Quindi quando si fa clic su "Esegui come> Esegui sul server" si aprirà correttamente.


Sì, dobbiamo. Bella condivisione.
Dinath,

2

Volevo solo aggiungere che se non si desidera affatto il nome dell'applicazione nel contesto principale, è sufficiente inserire "/" (senza virgolette, solo la barra) in Eclipse -> Impostazioni progetto Web -> Voce root di contesto

Questo distribuirà la webapp solo su http: // localhost: 8080 /

Naturalmente, ciò causerà problemi con altre webapp che si tenta di eseguire sul server, quindi andate avanti con quello.

Mi ha preso un'eternità per metterlo insieme ... quindi anche se questo post ha 8 anni, spero che questo possa comunque aiutare qualcuno!


0

Nel progetto Java, aprire la cartella .settings. lì trova il file chiamato "org.eclipse.wst.common.component". Cambia tag <wb-module deploy-name = "NEW_NAME">.

Inoltre, potresti voler cambiare la root di contesto nelle proprietà del progetto


tutto ciò che sembra buono sul mio progetto e funziona perfettamente all'interno dell'eclissi. è quando lo converto in un file di guerra usando Maven che perde il suo contesto di root e invece di localhost / eventi / gira su localhost / che rompe tutti i miei collegamenti
JesseBoyd

0

Se si utilizza eclipse per distribuire l'applicazione. Possiamo usare questo plugin 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>

ora vai alla cartella principale del tuo progetto e apri il prompt cmd in quella posizione digita questo comando:

mvn eclipse: eclipse -Dwtpversion = 2.0

Potrebbe essere necessario riavviare eclipse o nella vista server elimina server e crea agian per vedere l'effetto. Mi chiedo che questo esercizio abbia senso nella vita reale ma funzioni.


0

Se si utilizza l'applicazione enterprise maven java ee 7/8, è necessario modificare il pom.xml del progetto 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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.