Jadual Kandungan
Masalah:
Penyelesaian:
1. Tukar fail konfigurasi mengikut siaran di Internet (jika ia dimulakan oleh Jar, ia akan berkuat kuasa), seperti berikut:
2. Tetapkan tamat masa sesi tomcat
Lubang besar yang disebabkan oleh kehabisan masa penyegerakan yang menyebabkan kegagalan sesi Spring
Selain itu, saya akan merakam penyegerakan masa pelayan Linux
Rumah Java javaTutorial Bagaimana untuk menyelesaikan masalah bahawa tetapan tamat masa sesi Springboot2 adalah tidak sah

Bagaimana untuk menyelesaikan masalah bahawa tetapan tamat masa sesi Springboot2 adalah tidak sah

May 22, 2023 pm 01:49 PM
session springboot

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小时过期
Salin selepas log masuk

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;
    }
Salin selepas log masuk

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"/>
Salin selepas log masuk

2) Tukar web.xml dalam projek :

<session-config>  
    <session-timeout>20</session-timeout>  
</session-config>
Salin selepas log masuk

3) Tukar

session.setMaxInactiveInterval(30*60);
Salin selepas log masuk

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();
    }
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan Redis untuk melaksanakan kunci teragih dalam SpringBoot Cara menggunakan Redis untuk melaksanakan kunci teragih dalam SpringBoot Jun 03, 2023 am 08:16 AM

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

Bagaimana untuk menyelesaikan kegagalan sesi Bagaimana untuk menyelesaikan kegagalan sesi Oct 18, 2023 pm 05:19 PM

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

Bagaimana untuk menyelesaikan masalah bahawa springboot tidak boleh mengakses fail selepas membacanya ke dalam pakej balang Bagaimana untuk menyelesaikan masalah bahawa springboot tidak boleh mengakses fail selepas membacanya ke dalam pakej balang Jun 03, 2023 pm 04:38 PM

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 merentas domain Sesi PHP Penyelesaian kepada masalah merentas domain Sesi PHP Oct 12, 2023 pm 03:00 PM

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

Analisis perbandingan dan perbezaan antara SpringBoot dan SpringMVC Analisis perbandingan dan perbezaan antara SpringBoot dan SpringMVC Dec 29, 2023 am 11:02 AM

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

Bagaimana SpringBoot menyesuaikan Redis untuk melaksanakan penyirian cache Bagaimana SpringBoot menyesuaikan Redis untuk melaksanakan penyirian cache Jun 03, 2023 am 11:32 AM

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

Bagaimana untuk mendapatkan nilai dalam application.yml dalam springboot Bagaimana untuk mendapatkan nilai dalam application.yml dalam springboot Jun 03, 2023 pm 06:43 PM

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

Bagaimana untuk melaksanakan log masuk SMS dalam aplikasi sesi kongsi Redis Bagaimana untuk melaksanakan log masuk SMS dalam aplikasi sesi kongsi Redis Jun 03, 2023 pm 03:11 PM

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

See all articles