1. Tugas musim semi dieksekusi dua kali
Masalah reproduksi dan analisis
Baru -baru ini, saya menggunakan kerangka kerja tugas waktu kuarsa dan menemukan bahwa tidak ada masalah dengan pelaksanaan lingkungan pengembangan. Setelah menggunakannya ke server, saya menemukan bahwa tugas itu dieksekusi beberapa kali secara bersamaan. Setelah mencari, saya menemukan bahwa ada masalah dengan file konfigurasi Tomcat di server.
File Konfigurasi Asli - Server.xml adalah sebagai berikut:
<Host name = "localhost" appbase = "webapps" unpackwars = "true" autodeploy = "true"> <valve classname = "org.apache.catalina.valves.accesslogvalve" Direktori ". /> </shost> <host name = "www.xxx.com" appbase = "webapps" unpackwars = "true" autodeploy = "true" xmlvalidation = "false" xmlnamespaceaware = "false"> <Path = "" docbase = "/usr/local/tomcat/apachex ".9 Reloadable = "true"> </context> </shost>
Host mewakili wadah yang dapat berisi beberapa konteks (aplikasi). File konfigurasi di atas berarti: Dua kontainer dikonfigurasi dalam tomcat, satu nama = localhost, direktori root aplikasi adalah Webapps, dan paket perang akan secara otomatis didekompresi dan digunakan secara otomatis. Jika konteksnya tidak ditentukan, semua aplikasi web di direktori root akan digunakan. Setelah penyebaran berhasil, jaringan eksternal dapat diakses melalui nama proyek IP + server; Nama lain = www.xxx.com, yang berbeda dari host pertama, dikonfigurasi dengan aplikasi web halaman beranda dan tidak perlu diakses dengan nama proyek. Setelah penyebaran berhasil, Anda dapat mengaksesnya melalui nama domain + nama proyek, dan proyek tempat halaman beranda dapat diakses langsung melalui nama domain root.
Saat ini, masalahnya muncul. Proyek yang berisi tugas waktu digunakan di direktori WebApps. Dua wadah independen di Tomcat digunakan sekali, yang setara dengan proyek yang digunakan dua kali di Tomcat di server. Kedua belah pihak akan menjalankan tugas waktu secara bersamaan, dan database yang sama ditentukan.
Pemecahan masalah
Oleh karena itu, agar tidak mempengaruhi akses normal dari proyek lain sebanyak mungkin, saya membuat kompromi dan mengatakan bahwa proyek yang perlu melakukan tugas waktu digunakan secara terpisah di folder lain, seperti webroot, dan kemudian hanya menggunakan host nama domain. Setelah file konfigurasi dimodifikasi, berikut ini adalah sebagai berikut:
<Host name = "localhost" appbase = "webapps" unpackwars = "true" autodeploy = "true"> <valve classname = "org.apache.catalina.valves.accesslogvalve" Direktori ". /> </shost> <host name = "www.xxx.com" appbase = "" unpackwars = "true" autodeploy = "true" xmlvalidation = "false" xmlnamespaceaware = "false"> <context path = "" docbase = "/usr/local/tomcat/apache-tomcat-tomcat." Reloadable = "true"> </context> <Context Path = "/Projection" docbase = "/usr/local/tomcat/apache-tomcat-8.5.9/webapps/proyekta" reloadable = "true"> </context> <Context Path = "/Projectb" Docbase = "/USR/LOKAL/LOKAL/TOMC/APACHE/APACHTB" DOCBASE8.9/USR/USR/LOCAL/TOMCAT/APACHC/APACHE.9 Reloadable = "true"> </context> <context path = "/Projectc" docbase = "/usr/local/tomcat/apache-tomcat-8.5.9/webroot/proyekc" reloadable = "true"> </context> </host>
Anda dapat melihat bahwa ProjectC adalah proyek yang berisi tugas waktu. Setelah penyebaran yang berhasil, kecuali untuk proyek yang hanya dapat diakses melalui nama domain, metode akses proyek lain tetap tidak berubah dari sebelumnya. Pada saat yang sama, masalahnya terpecahkan, dan tugas waktu hanya dieksekusi sekali.
Pepatah lain secara online
<Host name = "localhost" appbase = "webapps" unpackwars = "true" autodeploy = "true"> <context docbase = "proyekta" path = "" relooadable = "true" /> </shost>
Hanya ada satu host. Ketika Tomcat dimulai, semua proyek di direktori root akan digunakan sekali, dan kemudian konteks akan digunakan sekali lagi, yang juga akan menyebabkan tugas waktu dieksekusi dua kali.
Ada banyak solusi untuk masalah ini:
2. Masalah penyebaran tomcat lambat
Alibaba Cloud Server yang saya gunakan sangat lambat ketika menggunakan Tomcat, tetapi awan Alibaba baru yang saya beli kemudian tidak memiliki masalah ini. Setelah proyek dikerahkan, itu akan terjadi
Info [localhost-startstop-1] org.apache.catalina.startup.hostconfig.deploydirectory Menyebarkan direktori aplikasi web /opt/apache-tomcat-8.0.15-server/webapps/root
Butuh beberapa menit untuk melanjutkan di sini. Dulu saya berpikir itu adalah alasan konfigurasi server, tetapi kemudian saya secara tidak sengaja menemukan bahwa itu adalah alasan konfigurasi JRE. Setelah merujuk pada beberapa blog, saya menemukan bahwa Oracle memberikan alasan dan solusi di bawah dokumentasi WebLogic.
Perpustakaan yang digunakan untuk pembuatan angka acak dalam JVM Sun bergantung pada /dev /acak secara default untuk platform UNIX. Ini berpotensi memblokir proses server SIP WebLogic karena pada beberapa sistem operasi /dev /acak menunggu sejumlah "kebisingan" dihasilkan pada mesin host sebelum mengembalikan hasilnya. Meskipun /dev /acak lebih aman, BEA merekomendasikan penggunaan /dev /urandom jika konfigurasi JVM default menunda startup server sip weblogic.
Arti:
Metode Modifikasi:
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.