Bagaimana mengubah root konteks proyek web dinamis di Eclipse?


205

Saya mengembangkan proyek web dinamis di Eclipse. Saya dapat mengakses aplikasi melalui browser saya menggunakan URL berikut:

http://localhost:8080/MyDynamicWebApp

Saya ingin mengubah URL akses ke:

http://localhost:8080/app

Untuk melakukannya, saya mengubah root konteks dari proyek "Properties | Web Project Settings | Context Root". Namun, aplikasi web masih memiliki URL akses yang sama. Saya telah menggunakan kembali aplikasi pada Tomcat dan memulai kembali Tomcat, tetapi URL aksesnya sama seperti sebelumnya.

Saya menemukan bahwa tidak ada server.xmlfile yang terlampir pada WARfile tersebut. Tanpa server.xmlfile terlampir, bagaimana Tomcat menentukan bahwa root konteks aplikasi web saya /MyDynamicWebAppdan memungkinkan saya untuk mengakses aplikasi melalui URL root konteks ini?

Jawaban:


331

Saya yakin Anda sudah pindah sekarang, tapi saya pikir saya akan tetap menjawab.

Beberapa jawaban ini memberikan solusi. Yang sebenarnya harus terjadi adalah Anda membersihkan dan menerbitkan kembali proyek Anda untuk "mengaktifkan" URI baru. Ini dilakukan dengan mengklik kanan server Anda (pada tampilan Server) dan memilih Bersihkan. Kemudian Anda memulai (atau memulai kembali). Sebagian besar jawaban lain di sini menyarankan Anda melakukan hal-hal yang pada dasarnya menyelesaikan ini.

File yang berubah adalah workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datkecuali, yaitu, Anda memiliki lebih dari satu server di ruang kerja Anda dalam hal ini akan berada publishN.datdi jalur yang sama.

Semoga ini bisa membantu seseorang.


Tidak yakin apakah ini etiket yang tepat atau tidak - saya mengedit jawaban ini untuk memberikan langkah-langkah tepat untuk Eclipse Indigo.

  1. Di Properti proyek Anda , pilih Pengaturan Proyek Web .

  2. Ubah root Konteks ke aplikasi .

    tangkapan layar properti proyek Eclipse Pengaturan Proyek Web

  3. Pilih Window> Show View> Server .

  4. Hentikan server dengan mengklik kotak kotak merah ("Hentikan server" tooltip) atau klik konteks pada daftar server untuk memilih "Stop".

  5. Di server yang ingin Anda gunakan, klik konteks untuk memilih "Bersihkan ...".

    masukkan deskripsi gambar di sini

  6. Klik OK di kotak dialog konfirmasi ini.

    Cuplikan layar dialog yang meminta untuk memperbarui konfigurasi server agar sesuai dengan root konteks yang diubah

Sekarang Anda dapat menjalankan aplikasi Anda dengan URL "aplikasi" baru seperti:

http://localhost:8080/app/

Melakukan ini di luar Eclipse, di server produksi Anda, bahkan lebih mudah -> Ganti nama file perang. Ekspor aplikasi Vaadin Anda sebagai file WAR ( File> Ekspor> Web> file WAR ). Pindahkan file PERANG ke wadah servlet server web Anda seperti Tomcat. Ganti nama file WAR Anda, dalam hal ini ke app.war . Ketika Anda memulai wadah servlet, sebagian besar seperti Tomcat akan secara otomatis menyebarkan aplikasi, yang mencakup memperluas file perang ke folder. Dalam hal ini, kita akan melihat folder bernama aplikasi . Anda harus baik untuk pergi. Uji URL Anda. Untuk domain seperti * example.com "ini akan menjadi:

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

Pemrogram toolkit Vaadin mungkin perlu membangun kembali widget mereka jika menggunakan pengaya visual.


Jawaban yang bagus !!! Anda menyelamatkan hidup saya dari jawaban lain di sini menyarankan Anda melakukan hal-hal yang pada dasarnya menyelesaikan ini
AndreaNobili

Inilah jenius dari jawaban ini: Saya mencari Google di halaman ini, dan bahkan tidak membaca tag (Saya sedang membangun situs web ASP.NET menggunakan Visual Studio). Tetapi solusinya tetap bekerja!
Curt

Saya tidak punya pilihan dan "Pengaturan Proyek Web"
IntoTheDeep

hanya mengatakan itu workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datadalah file biner, saya tidak mengerti mengapa Anda menyebutkannya di sana, itu memberi kesan itu solusi untuk masalah
aliopi

Tetapi bagaimana jika kita tidak menggunakan Eclipse .. atau IDE apa pun .. Saya ingin secara terprogram mengkonfigurasi path root dari konteks servlet. Bagaimana saya melakukannya? di web.xml mungkin? ..
Giorgi Tsiklauri

32

Setelah mengubah root konteks di properti proyek Anda harus menghapus aplikasi web Anda dari Tomcat (menggunakan Tambah dan Hapus ... pada menu konteks server), gunakan kembali, kemudian tambahkan kembali aplikasi Anda dan gunakan kembali. Ini berhasil untuk saya.

Jika Anda dikejutkan, Anda memiliki pilihan lain: pilih server Tomcat pada tampilan Server. Mengklik dua kali pada server itu (atau memilih Buka di menu konteks) membawa editor multi halaman di mana ada halaman Modul. Di sini Anda dapat mengubah konteks root modul Anda (disebut Path pada halaman ini).


Terima kasih! Ini berhasil bagi saya. Namun, ia bahkan bekerja tanpa mengubah akar konteks di properti proyek. Apakah saya melewatkan sesuatu di sini?
Chris

Ini juga digunakan untuk saya di Eclipse build sebelumnya, tetapi di build saat ini (Luna) hanya opsi Clean yang berfungsi
Griknok

namasety, dhanywaada :) ketika saya awalnya mengubah konteks saya, itu tidak berfungsi bahkan setelah server restart dan bersih. itu hanya berfungsi posting, saya menghapus proyek dan membaca.
Yogesh Sanchihar

24

Jika Anda menjalankan Tomcat dari Eclipse, itu tidak menggunakan konfigurasi dari instalasi Tomcat Anda yang sebenarnya. Ini menggunakan konfigurasi Tomcat yang dibuat dan disimpan di bawah proyek "Server". Jika Anda melihat ruang kerja Eclipse Anda, Anda akan melihat proyek yang disebut "Server". Perluas proyek "Server" itu dan Anda akan menemukan server.xml. Buka file ini dan gulir ke bawah, dan Anda akan melihat sesuatu seperti ini: -

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

Di sini, Anda bisa mengubah jalur konteks proyek Anda ke sesuatu yang lain.

Semoga ini membantu.


Saya tidak yakin Anda ingin mengubah semua 3 nilai. Solusi Csaba_H bekerja untuk saya dan itu hanya mengubah atribut "path" ...
Chris

Yang ini tidak berfungsi untuk saya - file dalam direktori itu akan ditimpa ketika Anda me-restart server. Versi dua Csaba_H, Modul di bawah Tomcat Server, tampaknya seperti pendekatan "benar".
idarwin

17

Saya mencoba solusi yang disarankan oleh Russ Bateman Here in the post

http://localhost:8080/Myapp untuk http://localhost:8080/somepath/Myapp

Tapi Didnt bekerja untuk saya karena saya perlu memiliki file * .war yang dapat menampung konfigurasi dan bukan contoh individual server pada mesin lokal saya.

Referensi

Untuk melakukan itu saya perlu jboss-web.xml ditempatkan di 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>

Ini berhasil untuk saya. Lingkungan = Eclipse + m2e + m2e-wtp + digunakan untuk JBoss dari tampilan Server. Diperlukan untuk menggunakan proyek web utama sebagai ROOT dan tidak ada pengaturan Eclipse yang berhasil. Saya menyalin file Tosha (di atas) dan menempatkan "ROOT" tanpa tanda kutip sebagai nilai konteks-root. Dilakukan dan dilakukan. Terima kasih, @Tosha!
Steven Francolla

Ini berfungsi, tapi saya bertanya-tanya mengapa ia mengabaikan pengaturan di properti proyek?
Vedran

4
Bekerja dengan JBoss WildFly 8.1.0 Final
alexander

Saya bermigrasi dari MyEclipse 8.6 ke Eclipse dan tidak dapat menggunakan dengan '/' konteks root. Menambahkan jboss-web.xml berhasil dengan sukses. server: Jboss AS 5.1 Eclipse Luna.
Sai

9

Menetapkan path ke nothing dalam dialog edit modul web Eclipse memungkinkan saya untuk mengakses proyek tanpa komponen path di URL (yaitu ROOT)

Anda dapat mencapai dialog edit modul web dengan menekan F3 jika Anda memilih Tomcat dalam tampilan "Server" atau dengan mengklik dua kali.

Beberapa tangkapan layar:


Maaf, tapi bisakah Anda memberikan rincian lebih lanjut tentang ini?
smonff

Oh terima kasih! Pada Eclipse Luna di GNU / Linux, /meskipun diperlukan.
smonff

1
Saya menggunakan Eclipse Mars (4.5) di Win7.
Ray Hulha

6

Apache tomcat menyimpan jalur konteks proyek di jalur server.xml. Untuk setiap proyek web di Eclipse, ada tag dari sana Anda dapat mengubahnya.
Misalkan, ada dua atau tiga proyek yang digunakan di server. Untuk setiap satu jalur konteks disimpan di. Tag ini terletak di file server.xml di dalam Server yang dibuat di eclipse.

Saya punya satu proyek di sana pada konteks root path di server adalah:

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

Jalur ini mewakili jalur konteks aplikasi web Anda. Dengan mengubah jalur ini, jalur konteks aplikasi web Anda akan berubah.


6

Saya tahu jawabannya sudah diterima. Tapi, kalau-kalau ada orang yang menggunakan Maven ingin mencapai hal yang sama, cukup atur finalName di maven build ke nama apa pun yang Anda ingin berikan dan lakukan proyek pembaruan maven ->

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

4

Jika proyek ini adalah pakar, ubah "finalName" di pom.xml dan Perbarui Proyek sebagai Maven. Ini bekerja untuk saya.


2

Di Glassfish Anda juga harus mengubah file WEB-INF / glassfish-web.xml

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

Jadi ketika Anda mengklik "Jalankan sebagai> Jalankan di server" itu akan terbuka dengan benar.


Ya kita harus. Berbagi yang bagus.
Dinath

2

Saya hanya ingin menambahkan bahwa jika Anda tidak ingin nama aplikasi Anda dalam konteks root sama sekali, Anda dan cukup masukkan "/" (tanpa tanda kutip, hanya garis miring) di Eclipse -> Pengaturan Proyek Web -> Entri Root Konteks

Itu akan menyebarkan webapp ke hanya http: // localhost: 8080 /

Tentu saja, ini akan menyebabkan masalah dengan aplikasi web lain yang Anda coba jalankan di server, jadi lakukan itu.

Butuh saya selamanya untuk menyatukan itu ... jadi meskipun pos ini sudah berusia 8 tahun, semoga ini masih membantu seseorang!


0

Dalam proyek java, buka folder .settings. di sana cari file bernama "org.eclipse.wst.common.component". Ubah tag <wb-module deploy-name = "NEW_NAME">.

Anda juga mungkin ingin mengubah root konteks di properti proyek


semua yang terlihat bagus di proyek saya dan berjalan dalam gerhana dengan baik. itu ketika saya mengonversinya ke file perang menggunakan maven bahwa ia kehilangan konteks root dan bukannya localhost / peristiwa / itu berjalan di localhost / yang merusak semua tautan saya
JesseBoyd

0

Jika menggunakan gerhana untuk menggunakan aplikasi Anda. Kita bisa menggunakan plugin pakar ini

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

sekarang buka folder root proyek Anda dan buka cmd prompt di lokasi itu ketik perintah ini:

mvn eclipse: eclipse -Dwtpversion = 2.0

Anda mungkin perlu memulai ulang gerhana, atau di server hapus server dan buat lagi untuk melihat pengaruhnya. Saya ingin tahu latihan ini masuk akal dalam kehidupan nyata tetapi berhasil.


0

Jika menggunakan aplikasi java maven ee 7/8 perusahaan, perlu mengedit pom.xml proyek 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>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.