Saya ingin mengatur eclipse dan tomcat secara terintegrasi sehingga perubahan pada JSP dan servlet saya (jika mungkin) tercermin dengan segera tanpa memerlukan penerapan.
Oke, ini adalah salah satu pertanyaan yang memiliki banyak jawaban di seluruh internet tetapi semuanya tampak berbeda. (gunakan plugin Sysdeo, gunakan plugin JBOss, lakukan hal-hal dengan Eclipse yang sudah ketinggalan zaman, gunakan MyEclipse sebagai gantinya, dll.) dan saya tidak dapat menemukan 1 sumber daya definitif untuk dirujuk. Jadi untuk keuntungan saya, prosedur apa yang paling sederhana dan paling direkomendasikan untuk mengatur ini?
Ini mengasumsikan saya memiliki gerhana dan kucing jantan yang berjalan secara mandiri. Saya sebenarnya telah berhasil mengintegrasikannya dalam mode penerapan non-hot menggunakan petunjuk di sini: http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/index.html
Versi Eclipse Versi: 3.4.2 (Ganymede) Tomcat v6.0.20
Jawaban:
Ada dua pilihan.
Pertama, Eclipse memungkinkan Anda melakukan ini, dengan sedikit perubahan konfigurasi (lihat juga posting mendetail ini )
Ini masih akan mencerminkan perubahan kode tetapi tidak akan memulai ulang server.
Kedua, saya telah menggunakan plugin FileSync untuk waktu yang lama:
WEB-INF/classes
instalasi tomcat Anda (ini hampir sama dengan mengkonfigurasi perakitan penerapan)Ini bekerja dengan sempurna untuk saya seperti itu. Setiap perubahan non-struktural direfleksikan dengan segera, tanpa pemindahan.
Pembaruan:
Anda dapat membaca selengkapnya tentang metode penerapan panas di sini .
Saya juga membuat proyek yang dengan mudah menyinkronkan ruang kerja dengan wadah servlet.
sumber
Modules
tab di konfigurasi server, lalu klikedit
, hapus centangauto deploy enabled
, saya rasa ini adalah cara yang paling sederhana. PS: cara pertama Anda tidak berhasil untuk saya.Biarkan gerhana menulis file kelas langsung ke direktori $ TOMCAT / webapps / MyWebApp / WEB_INF / kelas. Kemudian, konfigurasikan apache-tomcat untuk memeriksa apakah file kelas telah diperbarui, dan muat ulang jika sudah.
Untuk mengonfigurasi tomcat agar memuat ulang kelas secara otomatis saat kelas berubah, Anda perlu
edit
$TOMCAT/conf/context.xml
dan setel:<Context reloadable="true">
Anda mungkin juga harus mengedit dan memuat ulang
webapps/$YourWebApp/web.xml
file Anda dan menyertakan:<web-app reloadable="true">
Saya tidak ingat apakah kedua perubahan diperlukan tetapi begitulah cara saya mengkonfigurasi tomcat-6.0.18 saya untuk memuat ulang otomatis.
sumber
Context
elemen di file server.xml, tetapi harus memantau / WEB-INF / kelas / dan / WEB-INF / lib untuk setiap perubahan. Di mana Anda membaca tentang atribut untukweb-app
elemen tersebut?Penafian : Saya hanya pelanggan yang bahagia, saya tidak bekerja untuk Zero Turnaround dan saya sama sekali tidak berafiliasi dengan mereka.
Lihat JRebel - ini memungkinkan Anda untuk membuat kode tanpa restart aplikasi web. Ini pada dasarnya bekerja dengan melengkapi kelas Anda dan menyesuaikan perubahannya. Ini menangani lebih banyak kasus daripada hot deploy , termasuk:
Ini komersial , ( detail harga , $ 550 / tahun per Juni 2018), dan memiliki banyak plugin untuk kerangka pihak ketiga, termasuk:
Anda mendapatkan uji coba gratis tanpa kesulitan - saya sarankan Anda mencobanya.
sumber
Ubah ruang kerja Anda di Eclipse ke \ tomcat \ webapps Karena ini hanya untuk pekerjaan Anda, ini seharusnya berfungsi dengan baik. Apa pun perubahan yang Anda buat di Eclipse ada di direktori yang sama, tomcat mencari aplikasi untuk diterapkan
sumber
Dalam tampilan server, buat server baru, jangan tambahkan sumber daya (proyek) apa pun ke server. Klik dua kali pada server di lokasi server. Pilih "Gunakan instalasi tomcat". Ubah "Deploy path" ke direktori deploy tomcat (Contoh: c: \ server \ Tomcat 7.0.14 \ webapps). Perluas "bagian Penerbitan". Centang "Publikasikan secara otomatis setelah acara build". Simpan dan tutup. Dari menu gerhana, centang "Proyek -> Bangun secara otomatis". Dari tampilan server, klik kanan pada server Anda, "Tambah dan hapus", publikasikan proyek Anda.
sumber
Mengapa tidak menggunakan server kucing jantan terintegrasi dari with in eclipse jika ini hanya untuk pengembangan? Anda dapat mengkonfigurasi server di bawah window-> preferensi. Setelah dikonfigurasi jika Anda memiliki jsp yang disebut page.jsp, Anda dapat mengklik kanan dan memilih jalankan di server. Di bawah preferensi-> umum-> Browser web Anda dapat memilih cuaca untuk menggunakan browser bawaan atau browser eksternal. Buat beberapa perubahan pada jsp Anda, simpan, dan segarkan halaman Anda dari browser. Perubahan akan secara otomatis terlihat setelah Anda menyimpan dan menyegarkan browser Anda.
sumber
Apa yang berhasil untuk saya di sini adalah:
context.xml seperti ini:
<Context path="/myapp" docBase="myapp" debug="5" reloadable="false" antiResourceLocking="false" antiJARLocking="true"> <!-- this because i´m using Spring 3.1 with Tomcat --> <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" /> </Context>
Kemudian, pada tab Server di Eclipse, pada tab "Modules", saya menonaktifkan "Auto Reload" ke semua modul yang sedang digunakan.
Juga biarkan konfigurasi default membiarkan penerbitan otomatis.
Dan menggunakan Maven dengan WTP, jangan lupa untuk membiarkan konten src / main / resources di dalamnya, karena Eclipse bersikeras untuk mengecualikan konten folder ini dari build akhir.
Hanya dengan semua ini saya mendapatkan kelas penuh (VM) hot-deploy dengan resource hot-deploy !!!
sumber
Di lingkungan pengembangan Anda, cukup arahkan server Tomcat Anda untuk mencari JSP di direktori mana pun Anda mengembangkannya. Segera setelah Anda menyimpan file, Anda akan dapat melihat perubahannya kemudian.
sumber
Saya berhasil membuat ini berfungsi di lingkungan pengembangan saya menggunakan agen JVM Spring Loaded . Sementara saya mengembangkan aplikasi web Spring, deskripsi proyek itu menyebutkan bahwa itu benar
Dengan menggunakan pengaturan berikut, saya bisa mendapatkan perubahan untuk dipublikasikan secara otomatis ke instans Tomcat yang terpasang (metode WTP Eclipse biasa). Saya menggunakan Spring Tool Suite 3.7.3 berdasarkan Eclipse Mars.2 (4.5.2).
-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
.class
file proyek , konfigurasikan-Dspringloaded=watchJars=
argumen VM sesuai dengan komentar masalah ini .Mulai server dan publikasikan proyek Aplikasi Web Dinamis seperti biasa. Sekali lagi, saya dapat menguji ini dengan aplikasi web Spring. Misalnya, memodifikasi kode, menambahkan / mengurangi metode, dll. Di kelas @Controller diterapkan hampir seketika setelah saya menyimpan file dan Eclipse membangun dan menerbitkan kelas yang diubah. Terakhir, bagian FAQ dari proyek Spring Loaded menyebutkan beberapa kasus di mana hal-hal tidak dapat dimuat ulang, jadi itu akan memerlukan restart server / aplikasi. Tetapi pengecualian itu jauh lebih jarang.
Satu catatan lagi: Ini TIDAK berfungsi dengan Pivotal tc Server atau VMware vFabric tc Server yang disertakan dengan STS. Untuk server tersebut, ada opsi "Aktifkan pemuatan ulang berbasis Agen Java (eksperimental)", tetapi opsi tersebut menggunakan rilis Spring Loaded 1.2.0 yang lebih lama, yang tidak berfungsi untuk saya.
sumber
Spring
memahami, Bagaimana denganNon Spring
aplikasi.Apakah Anda terbuka untuk menggunakan Jetty untuk tujuan pengembangan?
Jika demikian, cukup mudah digunakan dengan Maven - jalankan saja
mvn jetty:run
sumber
Ini mungkin bukan cara terbaik, tapi berhasil untuk saya.
Saya menggunakan perintah rsync untuk menyinkronkan perubahan dari proyek jsp saya ke $ contextPath.
Gunakan debugging jarak jauh di Eclipse untuk Tomcat yang akan memungkinkan hot-swapping kode terbatas. Jika Anda mengubah bidang statis atau menambahkan metode, Anda perlu mengekspor jar dan memulai ulang konteksnya.
sumber
bisakah kita menggunakan opsi di bawah ini? Klik dua kali pada Server di eclipse -> Lokasi Server -> Gunakan instalasi tomcat. Ini mengambil kendali dari instalasi tomcat. Anda tidak perlu me-restart server untuk perubahan di kelas java.
sumber
Saya telah menemukan cara paling sederhana: penggunaan tautan simbolik: Saya rasa ini adalah cara tercepat karena tidak ada sinkronisasi sama sekali: direktori tomcat dan direktori proyek Anda akan menjadi direktori yang sama sepanjang waktu.
Tomcat secara berkala akan mendeteksi perubahan dan menerapkan ulang aplikasi Anda.
Ada juga cara untuk men-debug aplikasi Anda, jadi menurut saya ini adalah solusi yang baik.
Saya telah mendokumentasikan solusi saya di sini , untuk siapa pun yang tertarik.
sumber
Jika Anda sedang terburu-buru:
voila! :)
sumber
Di Eclipse, klik Project di menu atas dan pastikan "Build Automatically" dipilih. Ini memperbaiki masalah saya. Saya menjalankan Eclipse dengan Tomcat menggunakan metadata ruang kerja saya. Saya juga menjalankan Maven dalam proyek Modul Web Dinamis. Untuk memverifikasi, tambahkan aplikasi Anda ke Tomcat. Mulai Tomcat dari dalam Eclipse. Pastikan aplikasi Anda diterapkan dan dijalankan. Buka tab Konsol di Eclipse. Buat perubahan dalam aplikasi Anda. Setelah beberapa detik, Anda akan melihat perubahan Anda dibuat dan diterapkan secara otomatis ke Tomcat.
sumber
Paling sederhana, tercepat: setel Eclipse untuk menghasilkan file WAR saat Anda membangun; sebagai langkah pasca-pembuatan, salin file WAR itu ke direktori webapps tomcat Anda. Tomcat akan mengenali perubahan dan menyegarkan situs tanpa perlu penerapan. Perhatikan bahwa ini tidak sempurna; pengguna yang menggunakan aplikasi web tersebut mungkin memiliki pengalaman yang kurang optimal, karena Tomcat memulai ulang aplikasi web "di bawah" mereka; tapi ini memang sesuai dengan permintaan Anda.
sumber