Saya agak bingung di sini. Dalam aplikasi kami, kami memiliki beberapa servlet didefinisikan. Berikut adalah kutipan dari web.xml
untuk salah satu servlet:
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>com.foo.framework.axis2.http.FrameworkServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
Sesuai pemahaman saya nilai untuk <load-on-startup>
harus menjadi bilangan bulat positif agar dapat dimuat secara otomatis. Saya mencari di google tetapi tanggapan yang saya temui hanya menambah kebingungan saya.
sumber
Jawaban Singkat : nilai> = 0 berarti bahwa servlet dimuat ketika aplikasi web digunakan atau ketika server dimulai. nilai <0: servlet dimuat kapan pun wadah itu mau.
Jawaban panjang (dari spesifikasi):
sumber
Ini menunjukkan bahwa servlet tidak akan dimulai sampai permintaan mencoba mengaksesnya.
Jika load-on-startup lebih besar dari atau sama dengan nol maka ketika kontainer mulai itu akan memulai servlet itu dalam urutan naik dari beban pada nilai startup yang Anda letakkan di sana (yaitu 0, 1 lalu 2 lalu 5 lalu 10 dan seterusnya) .
sumber
Siklus Hidup Servlet
Nilai 0 pada
load-on-startup
berarti bahwa titik 1 dieksekusi ketika permintaan datang ke servlet itu. Nilai-nilai lain berarti bahwa titik 1 dijalankan pada wadah startup.sumber
Seperti yang dinyatakan pada jawaban lain dan artikel nol saat memulai ini dapat diterima dan jika tidak ada servlet lain ini akan diprioritaskan pada pemuatan dan pemuatan selama penyebaran. Penggunaan terbaik dari load-on statup adalah untuk memuat servlet yang membutuhkan waktu lebih lama untuk diinisialisasi dengan baik sebelum permintaan pertama datang seperti servlets yang menciptakan kumpulan koneksi atau membuat panggilan jaringan atau menahan sumber daya yang besar, ini secara signifikan akan mengurangi waktu respons untuk beberapa permintaan pertama.
sumber
sumber
ya itu dapat memiliki nilai yang sama .... alasan untuk memberikan angka untuk memuat saat startup adalah untuk menentukan urutan server untuk memuat semua servlet. servlet dengan nilai 0 load-on-startup akan dimuat pertama dan servlet dengan nilai 1 akan dimuat setelah itu.
jika dua servlets akan memiliki nilai yang sama untuk load-on-startup daripada itu akan dimuat bagaimana mereka dinyatakan di web.xml dari atas ke bawah. servlet yang lebih dulu ada di web.xml akan dimuat lebih dulu dan yang lainnya akan dimuat setelah itu.
sumber
-> (Tidak adanya load-on-start-up) tag Pertama-tama ketika servlet digunakan di server, Ini adalah tanggung jawab server untuk membuat objek servlet. Misalnya: Misalkan Servlet digunakan di server, (Obyek Servlet tidak tersedia di server) klien mengirimkan permintaan ke servlet untuk pertama kalinya kemudian server membuat objek servlet dengan bantuan konstruktor default dan segera memanggil init (). Dari situ ketika klien mengirim permintaan, hanya metode layanan yang akan dieksekusi karena objek sudah tersedia
Jika load-on-start-up tag digunakan dalam deployment descriptor: Pada saat deployment sendiri server membuat objek servlet untuk servlets berdasarkan nilai positif yang disediakan di antara tag. Penciptaan objek untuk kelas servlet akan mengikuti dari 0-128 0 nomor servlet akan dibuat pertama dan diikuti oleh angka lainnya.
Jika kami memberikan nilai yang sama untuk dua servlet di web.xml maka pembuatan objek akan dilakukan berdasarkan posisi kelas di web.xml juga bervariasi dari server ke server.
Jika kami memberikan nilai negatif di antara beban saat tag pembuka, maka server tidak akan membuat objek servlet.
Skenario lain di mana server membuat objek untuk servlet.
Jika kami tidak menggunakan tag pembuka saat memulai di web.xml, maka proyek dikerahkan ketika klien mengirim permintaan untuk server pertama kali membuat objek dan server bertanggung jawab untuk memanggil metode siklus hidupnya. Kemudian jika .class telah dimodifikasi di server (tomcat). sekali lagi klien mengirim permintaan untuk servlet yang dimodifikasi tetapi dalam kasus objek kucing jantan tidak akan dibuat dan server menggunakan objek yang ada kecuali me-restart server terjadi. Tetapi dalam kelas web-logic kapan pun file .class dimodifikasi di server tanpa memulai ulang server jika menerima permintaan maka server memanggil metode penghancuran pada servlet yang ada dan membuat objek servlet baru dan memanggil init () untuk initilisasi-nya. .
sumber
Jika nilainya <0, serlet akan dipakai saat permintaan datang, atau>> 0 kontainer akan dimuat dalam urutan peningkatan nilai. jika 2 atau lebih servlet memiliki nilai yang sama, maka urutan servlet dideklarasikan di web.xml.
sumber
Kontainer servlet memuat servlet saat startup atau ketika permintaan pertama dibuat. Pemuatan servlet tergantung pada atribut "load-on-startup" dalam file "web.xml". Jika atribut memiliki bilangan bulat positif (0 hingga 128) maka servlet di-load dengan memuat kontainer sebaliknya ia dimuat saat permintaan pertama datang untuk layanan.
Ketika servlet dimuat setelah mendapat permintaan maka disebut "Lazy loading".
sumber
Ini sederhana seperti yang bahkan tidak Anda harapkan.
Jika nilai positif itu dimuat ketika wadah dimulai
Jika nilainya tidak positif dari servelet yang dimuat saat permintaan dibuat.
sumber