


Bagaimana untuk menyelesaikan masalah bahawa tetapan tamat masa sesi Springboot2 adalah tidak sah
Masalah:
Hari ini, saya menghadapi masalah tamat masa tetapan dalam projek Perubahan application.properties dalam SpringBoot2 tidak pernah berkuat kuasa.
Penyelesaian:
Bekas terbenam yang digunakan oleh Spring Boot dikawal oleh pelayan.* sifat. Spring Boot akan mencipta contoh bekas servlet menggunakan salah satu contoh ServletWebServerFactory. Kelas ini menggunakan atribut pelayan.* untuk mengkonfigurasi bekas servlet terurus (seperti Tomcat, Jetty, dsb.).
Apabila aplikasi dibungkus sebagai fail perang dan digunakan pada contoh Tomcat, atribut pelayan.* tidak boleh digunakan. Ini tidak terpakai kerana bekas servlet pra-dibuat boleh digunakan (kerana perkhidmatan berjalan dari jauh). Oleh itu, menggunakan ke Tomcat jauh akan menyebabkan pelayan.* sifat tidak berguna.
1. Tukar fail konfigurasi mengikut siaran di Internet (jika ia dimulakan oleh Jar, ia akan berkuat kuasa), seperti berikut:
server: servlet: session: timeout: PT1H # 1小时过期 cookie: max-age: PT1H # 1小时过期
Nota : PT1H bermaksud masa untuk menetapkan tamat sesi ialah 1 jam.
Sambungan: Tempoh
Temui kaedah setTimeouot dengan melihat kod sumber springboot Di sini, contoh Tempoh diperlukan untuk dihantar.
public void setTimeout(Duration timeout) { this.timeout = timeout; }
Tempoh baharu dalam. Java8 dan digunakan terutamanya untuk pengiraan Perbezaan tarikh, Tempoh diisytiharkan muktamad dan selamat untuk benang.
Jika anda menukar rentetan, ia serupa dengan kaedah pemformatan tarikh SimpleDateFormat
Rentetan jangka masa adalah serupa dengan nombor, iaitu positif dan negatif: lalai adalah positif, dan negatif bermula dengan '-', diikuti dengan Kemudian 'PT', huruf masa berikut:
'D' - hari
'H' - jam
'M' - Minit
'S' - Seconds
Setiap unit mesti bermula dengan nombor, dan jam dan minit Susunan saat tidak boleh dikacau, contohnya: PT2H3M2S adalah sama dengan -PT-2H-3M-2S.
2. Tetapkan tamat masa sesi tomcat
1) Dalam direktori conf tomcat, tukar servler.xml:
<Context path="/abtest" docBase="/abtest" defaultSessionTimeOut="3600" isWARExpanded="true" isWARValidated="false" isInvokerEnabled="true" isWorkDirPersistent="false"/>
2) Tukar web.xml dalam projek :
<session-config> <session-timeout>20</session-timeout> </session-config>
3) Tukar
session.setMaxInactiveInterval(30*60);
dalam program Apabila anda menghadapi masalah yang sama, sila baca huruf merah di atas dan selesaikan masalah mengikut urutan.
Kod ujian:
@RestController @RequestMapping("/valid-time") public class TestController { @GetMapping("/test") public String validTime(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); int sessionTime = session.getMaxInactiveInterval(); return new StringBuilder("sessionTime=").append(sessionTime).toString(); } }
Lubang besar yang disebabkan oleh kehabisan masa penyegerakan yang menyebabkan kegagalan sesi Spring
Lubang besar yang disebabkan oleh penyegerakan yang tidak disegerakkan masa pelayan Linux menyebabkan kegagalan sesi Spring
Disebabkan keperluan perniagaan, persekitaran berdiri sendiri asal telah ditukar kepada persekitaran kluster Untuk tidak mengubah suai tugas, sesi musim bunga + redis dipilih sebagai penyelesaian perkongsian sesi.
Selepas mengesahkan penyelesaian teknikal, saya mencari banyak maklumat tentang sesi musim bunga di Internet Selepas membacanya dan tidak menemui sebarang kesilapan oleh orang terdahulu, saya mula mengusahakannya.
Proses pemasangan redis diabaikan.
Tambah sesi musim bunga pada projek langkah demi langkah mengikut maklumat Projek nod tunggal berjalan dengan jayanya tanpa sebarang ralat dan sesi telah berjaya ditulis ke redis.
Kemudian demi keselamatan, saya memasang nginx pada komputer saya dan menggunakan 3 tomcat Semuanya kelihatan sempurna, dan perkongsian sesi telah selesai antara berbilang nod.
Semua persiapan awal telah selesai setakat ini, dan langkah terakhir hanya tinggal.
Mimpi ngeri bermula...
Lengkapkan penggunaan semua nod dalam talian, dan kemudian buka penyemak imbas untuk berjaya mengakses aplikasi Sudah tentu, kita tidak boleh berhenti pada titik yang kita lihat halaman telah selesai, kita mesti melakukannya tidak kira apa pun Log masuk dan log masuk, jadi...
Kemudian...
Saya memasukkan kata laluan pengguna berkali-kali, mendorong bahawa log masuk berjaya, tetapi keputusan akhir masih ditolak, o(╥﹏╥)o
Apa yang berikut ialah banyak perjalanan untuk mengisi lubang
Lihat log...
Lihat pelbagai permintaan permintaan...
Saya mengesyaki terdapat BUG dalam sesi musim bunga... ...
Malah mendayakan penyahpepijatan mod DEBUG jauh, dan akhirnya melihat dalam mod DEBUG universal yang apabila sesi musim bunga mendapatSesi, jika sesi diperoleh, akan terlebih dahulu menentukan sama ada sesi telah tamat tempoh, bandingkan Kaedah ini juga sangat mudah, iaitu mendapatkan masa sistem semasa dan membandingkannya dengan masa tamat sesi Jika masa semasa kurang daripada masa tamat, ia menunjukkan bahawa sesi belum tamat. Apabila saya melihat ini, saya serta-merta merasakan rasa pencerahan, dan alam semesta kecil akhirnya tercetus di sini.
Nima—> Semua sesi yang diperoleh telah tamat tempoh, dan kemudian...kemudian...tentunya saya tergesa-gesa berlari untuk menyemak masa pelayan, jadi...saya menangis o(╥﹏╥)o , ternyata Nima Awak yang tipu saya...
Untuk memperingati perjalanan ini, saya siarkan artikel ini
Selain itu, saya akan merakam penyegerakan masa pelayan Linux
arahan tarikh:
tarikh: Lihat masa semasa, hasilnya adalah seperti berikut: Sel 4 Mac 01:36:45 CST 2017
tarikh -s 09:38:40 :Tetapkan masa semasa, hasilnya adalah seperti berikut: Sel 4 Mac 09:38:40 CST 2017
arahan ntpdate:
ntpdate -u ntp.api.bz: Perintah Penyegerakan masa rangkaian
pelayan biasa ntp:
Pusat Perkhidmatan Waktu Negara China: 210.72.145.44
Pelayan NTP (Shanghai): ntp.api.bz
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah bahawa tetapan tamat masa sesi Springboot2 adalah tidak sah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



1. Redis melaksanakan prinsip kunci teragih dan mengapa kunci teragih diperlukan Sebelum bercakap tentang kunci teragih, adalah perlu untuk menjelaskan mengapa kunci teragih diperlukan. Lawan daripada kunci yang diedarkan ialah kunci yang berdiri sendiri Apabila kami menulis program berbilang benang, kami mengelakkan masalah data yang disebabkan oleh mengendalikan pembolehubah yang dikongsi pada masa yang sama Kami biasanya menggunakan kunci untuk mengecualikan pembolehubah yang dikongsi bersama untuk memastikan ketepatannya pembolehubah yang dikongsi skop penggunaannya adalah dalam proses yang sama. Jika terdapat berbilang proses yang perlu mengendalikan sumber yang dikongsi pada masa yang sama, bagaimanakah ia boleh saling eksklusif? Aplikasi perniagaan hari ini biasanya merupakan seni bina perkhidmatan mikro, yang juga bermakna bahawa satu aplikasi akan menggunakan berbilang proses Jika berbilang proses perlu mengubah suai baris rekod yang sama dalam MySQL, untuk mengelakkan data kotor yang disebabkan oleh operasi yang tidak teratur, keperluan pengedaran. untuk diperkenalkan pada masa ini. Gaya dikunci. Ingin mencapai mata

Kegagalan sesi biasanya disebabkan oleh tamat tempoh seumur hidup sesi atau penutupan pelayan. Penyelesaian: 1. Memanjangkan hayat sesi; 2. Gunakan storan berterusan;

Springboot membaca fail, tetapi tidak boleh mengakses perkembangan terkini selepas membungkusnya ke dalam pakej balang Terdapat situasi di mana springboot tidak boleh membaca fail selepas membungkusnya ke dalam pakej balang adalah tidak sah dan hanya boleh diakses melalui strim. Fail berada di bawah resources publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

Penyelesaian kepada masalah silang domain PHPSession Dalam pembangunan pemisahan front-end dan back-end, permintaan merentas domain telah menjadi kebiasaan. Apabila menangani isu merentas domain, kami biasanya melibatkan penggunaan dan pengurusan sesi. Walau bagaimanapun, disebabkan oleh sekatan dasar asal penyemak imbas, sesi tidak boleh dikongsi secara lalai merentas domain. Untuk menyelesaikan masalah ini, kita perlu menggunakan beberapa teknik dan kaedah untuk mencapai perkongsian sesi merentas domain. 1. Penggunaan kuki yang paling biasa untuk berkongsi sesi merentas domain

SpringBoot dan SpringMVC adalah kedua-dua rangka kerja yang biasa digunakan dalam pembangunan Java, tetapi terdapat beberapa perbezaan yang jelas antara mereka. Artikel ini akan meneroka ciri dan penggunaan kedua-dua rangka kerja ini dan membandingkan perbezaannya. Mula-mula, mari belajar tentang SpringBoot. SpringBoot telah dibangunkan oleh pasukan Pivotal untuk memudahkan penciptaan dan penggunaan aplikasi berdasarkan rangka kerja Spring. Ia menyediakan cara yang pantas dan ringan untuk membina bersendirian, boleh dilaksanakan

1. Sesuaikan RedisTemplate1.1, mekanisme siri lalai RedisAPI Pelaksanaan cache Redis berasaskan API menggunakan templat RedisTemplate untuk operasi cache data Di sini, buka kelas RedisTemplate dan lihat maklumat kod sumber kelas tersebut. Isytihar kunci, Pelbagai kaedah pesirilan nilai, nilai awal kosong @NullableprivateRedisSe

Dalam projek, beberapa maklumat konfigurasi sering diperlukan Maklumat ini mungkin mempunyai konfigurasi yang berbeza dalam persekitaran ujian dan persekitaran pengeluaran, dan mungkin perlu diubah suai kemudian berdasarkan keadaan perniagaan sebenar. Kami tidak boleh mengekodkan konfigurasi ini dalam kod. Adalah lebih baik untuk menulisnya dalam fail konfigurasi Sebagai contoh, anda boleh menulis maklumat ini dalam fail application.yml. Jadi, bagaimana untuk mendapatkan atau menggunakan alamat ini dalam kod? Terdapat 2 kaedah. Kaedah 1: Kita boleh mendapatkan nilai yang sepadan dengan kunci dalam fail konfigurasi (application.yml) melalui ${key} beranotasi dengan @Value Kaedah ini sesuai untuk situasi di mana terdapat sedikit perkhidmatan mikro projek, Apabila perniagaan adalah rumit, logik

1. Melaksanakan log masuk SMS berdasarkan sesi 1.1 Carta alir log masuk SMS 1.2 Melaksanakan penghantaran kod pengesahan SMS Perihalan permintaan hujung hadapan: Penerangan kaedah permintaan POST laluan permintaan/pengguna/kod parameter permintaan telefon (nombor telefon) nilai pulangan Tiada antara muka belakang pelaksanaan: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){/1
