Pertanyaan praktik terbaik aplikasi web java


Saya mencoba mencari cara optimal untuk mengembangkan dan merilis aplikasi web yang cukup sederhana, dan saya mengalami beberapa masalah. Saya akan menggariskan keputusan yang telah saya buat, karena di suatu tempat saya jelas-jelas telah keluar dari rel .. Sangat bersyukur atas bantuan apa pun!

Saya memiliki apa yang saya pikir adalah aplikasi web yang cukup sederhana. Ini berisi beberapa jsps yang mereferensikan beberapa kacang java, dan html statis biasa, js, css dan gambar.

Keputusan 1) Saya ingin memiliki prosedur pelepasan yang jelas dan bersih, sehingga saya bisa mengembangkannya di mesin lokal saya dan kemudian melepaskannya secara andal ke mesin produksi. Oleh karena itu saya membuat keputusan untuk mengemas aplikasi ke dalam file perang (termasuk semua sumber daya statis), untuk meminimalkan bit dan potongan terpisah yang perlu saya lepaskan. Sejauh ini bagus?

Keputusan 2) Saya ingin hal-hal di mesin lokal saya menjadi seakrab mungkin dengan lingkungan produksi. Jadi di html saya, misalnya, saya mungkin memiliki referensi ke file statis seperti http://static.foo.com/file . Untuk menjaga kode ini bekerja dengan lancar di dev dan prod, saya memutuskan untuk menaruh static.foo.com di / etc / hosts saya ketika mengembangkan secara lokal, sehingga semua url bekerja dengan benar tanpa mengubah apa pun.

Keputusan 3) Saya memutuskan untuk menggunakan eclipse dan maven untuk memberikan saya lingkungan praktik terbaik untuk mengatur dan membangun proyek saya.

Jadi saya memiliki pengaturan ketat yang bagus sekarang, kecuali itu:

Setiap kali saya ingin mengubah apa pun dalam pengembangan, seperti satu baris dalam file html, saya harus membangun kembali seluruh proyek dan kemudian menunggu tomcat memuat perang sebelum saya dapat melihat apakah itu yang saya inginkan. Jadi pertanyaan saya adalah:

1) Apakah ada cara untuk menghubungkan gerhana dan kucing jantan sehingga saya tidak perlu membangun kembali perang setiap kali? yaitu kucing jantan sedang melihat langsung ke ruang kerja saya yang sebenarnya untuk melayani file-file statis?

2) Saya pikir saya mungkin membuat lebih sulit dengan menggunakan / etc / hosts untuk mencerminkan url produksi - apakah ada cara yang lebih baik yang tidak melibatkan perubahan secara manual melalui url (relatif url baik-baik saja tentu saja, tetapi di mana Anda memiliki banyak subdomain , katakan satu untuk file statis dan satu lagi untuk dinamis, Anda harus menuliskan jalur lengkapnya, tentunya?)

3) Apakah ini benar-benar praktik terbaik ?? Bagaimana orang mengatur segalanya sehingga mereka menyeimbangkan kebutuhan untuk proses pembuatan yang otomatis dan menyeluruh di satu sisi, dan kecepatan dan fleksibilitas untuk dapat mengembangkan javascript dan html dan css dengan cepat, secepat jika hanya menunjuk apache di direktori dan dikembangkan secara langsung? Apa yang orang temukan bekerja?

Terimakasih banyak!

Edit: Terima kasih atas tanggapan Anda yang luar biasa! Jika saya bisa menandainya dengan benar, saya akan .. Ini benar-benar membantu saya. Yang saya dengar adalah bahwa praktik terbaik adalah dengan melestarikan struktur webapp dalam pengembangan, dan menjalankannya sedekat mungkin dengan lingkungan produksi. Sepertinya perbedaan antara orang adalah sejauh mana orang dipersiapkan untuk menyebarkan sumber daya panas ke dalam wadah servlet, menghindari proses pembuatan untuk kecepatan ekstra atau kenyamanan. Itu masuk akal. Terima kasih lagi.


5
2018-05-13 01:17


asal


Jawaban:


Untuk menjawab # 1, saya akan menyarankan yang berikut:

  1. Luangkan waktu belajar maven untuk membangun .war Anda tanpa gerhana. Tidak terlalu sulit dengan arketipe yang tepat. Lihat di sini untuk detail lebih lanjut: http://maven.apache.org/guides/mini/guide-webapp.html
  2. Maven dapat menghasilkan proyek gerhana baik melalui mvn eclipse:eclipse atau dengan menggunakan plugin m2
  3. Untuk penyebaran ke mesin lokal Anda dan ke produksi, gunakan plugin kargo maven. http://cargo.codehaus.org/Maven2+plugin   dan http://blank.jasonwhaley.com/2010/03/automated-deployment-with-cargo-drive.html

Untuk menjawab pertanyaan # 2, tidak ada yang salah dengan memodifikasi file / etc / hosts Anda untuk meniru produksi. Cukup skrip cepat yang memungkinkan Anda menambahkan / menghapus entri tersebut dan membersihkan cache dns Anda. Saya melakukan itu sepanjang waktu. (pastikan untuk membuat peramban Anda membersihkan cache-nya secara sering juga melalui pengaturan yang relevan).

Untuk menjawab pertanyaan # 3) ya ini adalah bagaimana Anda harus melakukan sesuatu. Setiap build harus menghasilkan satu artefak yang dapat disebarkan yang dapat Anda terapkan ke salah satu lingkungan Anda dalam satu langkah. Anda perlu memastikan Anda dapat melakukan ini tanpa IDE Anda dan menggunakan IDE hanya sebagai alat untuk membantu Anda selama fase pengembangan.


3
2018-05-13 01:57



Ini seperti apa yang harus saya lakukan di tempat kerja, meskipun kami menggunakan semut (untuk saat ini?). Juga, ketika saya menggunakan IDE (atau dua), saya menolak untuk memiliki satu sebagai bagian dari proses pembangunan saya, PERNAH. Seseorang harus dapat memahami dan mengatur bangunan Anda.


4
2018-05-13 01:56



Apakah ada cara untuk menghubungkan gerhana   dan kucing jantan sehingga saya tidak perlu melakukannya   membangun kembali perang setiap saat?

1) Saya pikir Anda terlalu mengandalkan IDE Anda. Biasanya saya memiliki build.xml Ant yang memiliki beberapa tugas: pertama adalah "membangun perang" yang lain adalah "memperbarui jsps." Membangun perang mengkompilasi semua kode, mengemasnya, menyebarkannya ke Tomcat dan memulai ulang semuanya. Memperbarui jsp tidak me-restart server, itu hanya salinan langsung dari file lokal saya ke turunan Tomcat. Tidak perlu memulai ulang karena ini adalah JSP. Butuh sekitar setengah detik.

di mana Anda memiliki banyak subdomain, katakanlah   satu untuk file statis dan satu lagi untuk   dinamis, Anda harus menulis   jalan penuh, tentunya?

2) Tidak mungkin, Jose. Jadi maksud Anda setiap saat perubahan nama server, Anda harus mengkompilasi ulang kode Anda? Jika Anda perlu mendukung URL dinamis, Anda mungkin hanya ingin menggigit peluru dan melihat kerangka kerja untuk melakukan pengangkatan berat untuk Anda. Saya sangat menyukai Garis-garis (yang mendukung penulisan ulang URL dinamis di luar kotak) ... ada yang lain.


4
2018-05-13 05:58



Orang lain telah menjawab Anda, saya hanya akan mengomentari ini (ini terlalu lama untuk komentar btw jadi saya membuatnya menjadi jawaban):

Setiap kali saya ingin mengubah apa pun   dalam pengembangan, seperti satu baris dalam   file html, saya harus membangun kembali   seluruh proyek dan kemudian menunggu   tomcat untuk memuat perang sebelum saya bisa   lihat apa yang kuinginkan.

Jika Anda mengubah satu baris dalam file html, tidak perlu membangun kembali seluruh proyek.

Perhatikan bahwa saya selalu membangun kembali yang lengkap .perang dan memindahkan saya .perang tetapi ini membutuhkan waktu kurang dari dua detik (kurang dari satu detik untuk rezip .war [itu benar-benar apa .war, file zip] dan kurang dari satu detik untuk memindahkannya) karena:

  • Anda tidak perlu mengkompilasi ulang seluruh proyek Anda ketika Anda hanya mengubah satu baris dalam file html

Sama ketika Anda mengubahnya .Jawa file: Anda cukup mengkompilasi ulang file tersebut dan kembali berperang.

Saya menulis file build Ant saya sendiri dari awal (tidak ada Maven di sini) dan saya punya beberapa target. Saya dapat memaksa "membangun bersih", yang akan menyusun ulang semua tetapi biasanya saya hanya mengemas ulang dan menerapkan ulang .war

Anda dapat memeriksanya sendiri: buat .war, buka zip di, katakanlah, direktori dir1, lalu ubah satu .html (atau satu file .java / .class) dan buat .war baru dan unzip yang baru. Bantu, katakan, dir2.

Kemudian bandingkan dir1 dan dir2: sekarang perbaiki proses build Anda sehingga Anda dapat membuat yang kedua .perang tanpa perlu mengkompilasi ulang semuanya.

Mengubah satu .html, .java, .jsp, .css, .js / file apa pun dan menerapkan ulang file .war baru akan menjadi hitungan detik (kurang dari dua detik jika Anda tidak membuang wastafel dapur di Webapp).

Perhatikan bahwa pada proyek yang sama, pengembang lain di sini lebih suka "menyebarkan panas" / mengganti file langsung di webapp yang meledak (saya lebih suka untuk memindahkan. Setiap waktu dan karena repackage / redeploy lengkap saya membutuhkan kurang dari dua detik saya baik-baik saja dengan cara itu).


2
2018-05-13 08:26



Anda tidak perlu merekonstruksi file perang jika proyek Anda adalah Aplikasi Web Dinamis di Eclipse dan dikonfigurasi server Tomcat dengan benar. Ikuti petunjuk di bawah ini:

1) Lihat di bawah ini tentang cara mengkonfigurasi server tomcat dengan gerhana:     http://greatwebguy.com/programming/eclipse/make-eclipse-and-tomcat-play-nice-together/

2) Gunakan path relatif untuk aplikasi Anda tetapi bukan path absolut.

3) Jika Anda mengikuti 2 langkah di atas dengan benar maka Anda memiliki lingkungan terbaik untuk pengembangan.


2
2018-05-13 20:56



selama pengembangan, Anda harus mengkonfigurasi gerhana dan tomcat sehingga tidak perlu membuat ulang / redeloy. cukup modifikasi html / css / jsp dll, simpan, dan segarkan browser untuk melihat hasilnya.

tetapi sebelum menerapkan ke situs produksi, Anda harus membuat versi bersih dan menguji dengan hati-hati.

domain: mereka harus berada dalam file konfigurasi; dev dan prod harus memiliki file konfigurasi yang berbeda.


1