Inhaltsverzeichnis
Problem:
Lösung:
1. Ändern Sie die Konfigurationsdatei gemäß dem Beitrag im Internet (wenn es sich um einen Jar-Start handelt, wird sie wirksam) wie folgt:
Fügen Sie den Informationen zufolge Schritt für Schritt eine Frühlingssitzung zum Projekt hinzu. Das Einzelknotenprojekt lief erfolgreich und ohne Fehler und die Sitzung wurde erfolgreich in Redis geschrieben.
Heim Java javaLernprogramm So lösen Sie das Problem, dass die Timeout-Einstellung für die Springboot2-Sitzung ungültig ist

So lösen Sie das Problem, dass die Timeout-Einstellung für die Springboot2-Sitzung ungültig ist

May 22, 2023 pm 01:49 PM
session springboot

Problem:

Beim heutigen Projekt ist ein Einstellungs-Timeout-Problem aufgetreten und die application.properties-Änderungen von SpringBoot2 wurden nie wirksam.

Lösung:

  • Der von Spring Boot verwendete eingebettete Container wird von den server.*-Eigenschaften gesteuert. Spring Boot erstellt eine Instanz des Servlet-Containers mithilfe einer der ServletWebServerFactory-Instanzen. Diese Klassen verwenden server.*-Attribute, um verwaltete Servlet-Container (wie Tomcat, Jetty usw.) zu konfigurieren.

  • Wenn die Anwendung in eine WAR-Datei gepackt und auf einer Tomcat-Instanz bereitgestellt wird, können die server.*-Attribute nicht verwendet werden. Diese gelten nicht, da der vorgefertigte Servlet-Container verwendet werden kann (da der Dienst remote ausgeführt wird). Daher führt die Bereitstellung auf einem Remote-Tomcat dazu, dass die server.*-Eigenschaften unbrauchbar werden.

1. Ändern Sie die Konfigurationsdatei gemäß dem Beitrag im Internet (wenn es sich um einen Jar-Start handelt, wird sie wirksam) wie folgt:

server:
  servlet:
    session:
      timeout: PT1H        # 1小时过期
      cookie:
        max-age: PT1H      # 1小时过期
Nach dem Login kopieren

Erläuterung: PT1H bedeutet: Setzen Sie die Sitzungsablaufzeit auf 1 Stunde.

Erweiterung: Duration

Die setTimeouot-Methode wird durch Anzeigen des Springboot-Quellcodes gefunden. Hier muss die Instanz von Duration übergeben werden.

public void setTimeout(Duration timeout) {
       this.timeout = timeout;
    }
Nach dem Login kopieren
# 🎜🎜#Duration ist neu in Java8 und wird hauptsächlich zur Berechnung von Datumsunterschieden verwendet. Duration wird als endgültig deklariert und ist threadsicher.

Wenn Sie eine Zeichenfolge konvertieren, ähnelt dies der Formatierungsmethode von SimpleDateFormat

Dauer Zeichenfolgen ähneln Zahlen, die positiv und negativ sind: Der Standardwert ist positiv und negativ ist '-' Am Anfang, gefolgt von 'PT', gefolgt von Zeitbuchstaben:

  • 'D' - Tag

    # 🎜🎜#
  • 'H' - Stunden #
  • Jede Einheit muss mit einer Zahl beginnen und die Reihenfolge von Stunden, Minuten und Sekunden darf nicht durcheinander gebracht werden. Zum Beispiel: PT2H3M2S ist gleich -PT-2H-3M-2S.
  • 2. Legen Sie das Sitzungszeitlimit von Tomcat fest.

    1) Ändern Sie im conf-Verzeichnis von Tomcat die Datei servler.xml:
<Context path="/abtest" docBase="/abtest"  
  defaultSessionTimeOut="3600" isWARExpanded="true"  
  isWARValidated="false" isInvokerEnabled="true"  
  isWorkDirPersistent="false"/>
Nach dem Login kopieren
  • 2) In das Projekt web.xml ändern:

    <session-config>  
        <session-timeout>20</session-timeout>  
    </session-config>
    Nach dem Login kopieren
    3) Ändern Sie
  • session.setMaxInactiveInterval(30*60);
    Nach dem Login kopieren
    im Programm, lesen Sie bitte zuerst die roten Wörter oben und überprüfen Sie sie der Reihe nach . .

    Testcode:

    @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();
        }
    }
    Nach dem Login kopieren

    Nicht synchronisierte Zeit führt zum Ausfall der Spring-Sitzung.

    Nicht synchronisierte Zeit auf dem Linux-Server Ursachen für die große Fehlergrube der Frühlingssitzung wurde als Session-Sharing-Lösung ausgewählt.

    Nachdem ich die technische Lösung bestätigt hatte, suchte ich im Internet nach vielen Informationen über die Frühlingssitzung. Nachdem ich sie gelesen und keine Fehler von früheren Leuten gefunden hatte, begann ich daran zu arbeiten.

    Der Redis-Installationsprozess wird ignoriert.

    Fügen Sie den Informationen zufolge Schritt für Schritt eine Frühlingssitzung zum Projekt hinzu. Das Einzelknotenprojekt lief erfolgreich und ohne Fehler und die Sitzung wurde erfolgreich in Redis geschrieben.

    Dann habe ich sicherheitshalber Nginx auf meinem Computer installiert und 3 Tomcats bereitgestellt. Alles sah perfekt aus und die Sitzungsfreigabe zwischen mehreren Knoten wurde abgeschlossen. Bisher sind alle vorbereitenden Vorbereitungen abgeschlossen und es bleibt nur noch der letzte Schritt.

    Der Albtraum beginnt ...

    Stellen Sie alle Knoten online bereit und öffnen Sie dann den Browser, um erfolgreich auf die Anwendung zuzugreifen. Natürlich können wir nicht einfach damit aufhören An dem Punkt, an dem wir sehen, dass die Seite fertig ist, muss ich mich sowieso anmelden, also...

    Dann... Ich habe das Benutzerpasswort unzählige Male eingegeben und dazu aufgefordert Die Anmeldung war erfolgreich, aber das Endergebnis wurde immer noch abgelehnt, o(╥﹏╥)o

    Der nächste Schritt sind unzählige Grubenfüllfahrten

    Schauen Sie sich das Protokoll an ...

    Sehen Sie sich verschiedene Anfrageanfragen an ……

    Ich vermute, dass es in der Frühjahrssitzung einen FEHLER gibt…

    Ich habe sogar Remote DEBUG aktiviert Debuggen im Modus, und schließlich habe ich im universellen DEBUG-Modus festgestellt, dass beim Abrufen einer Sitzung im Frühling

    zunächst ermittelt, ob die Sitzung abgelaufen ist Systemzeit und vergleichen Sie sie mit der Ablaufzeit der Sitzung. Wenn die aktuelle Zeit kürzer als die Ablaufzeit ist, identifizieren Sie die Sitzung.

    Als ich das sah, verspürte ich sofort ein Gefühl der Erleuchtung und das kleine Universum brach hier endlich aus.

    Nima—> Alle erworbenen Sitzungen waren abgelaufen, und dann ... dann ... bin ich natürlich schnell losgelaufen, um die Serverzeit zu überprüfen, also ... habe ich geweint )o, es stellt sich heraus. Verdammt, du hast mich ausgetrickst...

    Zur Erinnerung an diesen Boxenstopp poste ich diesen Artikel

    Zeichne auch den Linux-Server auf Zeitsynchronisierung

    Datumsbefehl:

    Datum: Aktuelle Uhrzeit anzeigen, die Ergebnisse sind wie folgt: Di 4. März 01 :36:45 CST 2017

    date -s 09:38:40: Stellen Sie die aktuelle Uhrzeit ein, das Ergebnis ist wie folgt: Tue Mar 4 09:38:40 CST 2017

    #🎜 🎜#

    ntpdate-Befehl: # 🎜🎜#

    ntpdate -u ntp.api.bz: Netzwerkzeitsynchronisierungsbefehl

    ntp häufig verwendeter Server :

    #🎜 🎜#China National Time Service Center: 210.72.145.44

    NTP-Server (Shanghai): ntp.api.bz

    Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass die Timeout-Einstellung für die Springboot2-Sitzung ungültig ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    So implementieren Sie verteilte Sperren mit Redis in SpringBoot So implementieren Sie verteilte Sperren mit Redis in SpringBoot Jun 03, 2023 am 08:16 AM

    1. Redis implementiert das Prinzip der verteilten Sperren und warum verteilte Sperren erforderlich sind. Bevor über verteilte Sperren gesprochen wird, muss erläutert werden, warum verteilte Sperren erforderlich sind. Das Gegenteil von verteilten Sperren sind eigenständige Sperren. Wenn wir Multithread-Programme schreiben, vermeiden wir Datenprobleme, die durch den gleichzeitigen Betrieb einer gemeinsam genutzten Variablen verursacht werden. Normalerweise verwenden wir eine Sperre, um die Richtigkeit der gemeinsam genutzten Variablen sicherzustellen Die gemeinsam genutzten Variablen liegen im gleichen Prozess. Wenn es mehrere Prozesse gibt, die gleichzeitig eine gemeinsam genutzte Ressource betreiben müssen, wie können sie sich dann gegenseitig ausschließen? Heutige Geschäftsanwendungen sind in der Regel Microservice-Architekturen, was auch bedeutet, dass eine Anwendung mehrere Prozesse bereitstellen muss. Wenn mehrere Prozesse dieselbe Datensatzzeile in MySQL ändern müssen, ist eine Verteilung erforderlich, um fehlerhafte Daten zu vermeiden wird zu diesem Zeitpunkt eingeführt. Der Stil ist gesperrt. Punkte erreichen wollen

    So beheben Sie Sitzungsfehler So beheben Sie Sitzungsfehler Oct 18, 2023 pm 05:19 PM

    Ein Sitzungsfehler wird normalerweise durch den Ablauf der Sitzungslebensdauer oder das Herunterfahren des Servers verursacht. Die Lösungen: 1. Verlängern Sie die Lebensdauer der Sitzung. 3. Verwenden Sie Cookies. 4. Aktualisieren Sie die Sitzung.

    So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann Jun 03, 2023 pm 04:38 PM

    Springboot liest die Datei, kann aber nach dem Packen in ein JAR-Paket nicht auf die neueste Entwicklung zugreifen. Es gibt eine Situation, in der Springboot die Datei nach dem Packen in ein JAR-Paket nicht lesen kann ist ungültig und kann nur über den Stream gelesen werden. Die Datei befindet sich unter resources publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

    Lösung für das domänenübergreifende Problem der PHP-Sitzung Lösung für das domänenübergreifende Problem der PHP-Sitzung Oct 12, 2023 pm 03:00 PM

    Lösung des domänenübergreifenden Problems von PHPSession Bei der Entwicklung der Front-End- und Back-End-Trennung sind domänenübergreifende Anforderungen zur Norm geworden. Wenn es um domänenübergreifende Probleme geht, nutzen wir in der Regel Sitzungen und verwalten diese. Aufgrund von Richtlinieneinschränkungen für den Browserursprung können Sitzungen jedoch standardmäßig nicht über Domänen hinweg gemeinsam genutzt werden. Um dieses Problem zu lösen, müssen wir einige Techniken und Methoden verwenden, um eine domänenübergreifende gemeinsame Nutzung von Sitzungen zu erreichen. 1. Die häufigste Verwendung von Cookies zum domänenübergreifenden Teilen von Sitzungen

    Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Dec 29, 2023 am 11:02 AM

    SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

    Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren Jun 03, 2023 am 11:32 AM

    1. Passen Sie den RedisTemplate1.1-Standard-Serialisierungsmechanismus an. Die API-basierte Redis-Cache-Implementierung verwendet die RedisTemplate-Vorlage für Daten-Caching-Vorgänge. Öffnen Sie hier die RedisTemplate-Klasse und zeigen Sie die Quellcodeinformationen der Klasse publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations an. Schlüssel deklarieren, verschiedene Serialisierungsmethoden des Werts, der Anfangswert ist leer @NullableprivateRedisSe

    So erhalten Sie den Wert in application.yml in Springboot So erhalten Sie den Wert in application.yml in Springboot Jun 03, 2023 pm 06:43 PM

    In Projekten werden häufig einige Konfigurationsinformationen benötigt. Diese Informationen können in der Testumgebung und in der Produktionsumgebung unterschiedliche Konfigurationen haben und müssen möglicherweise später basierend auf den tatsächlichen Geschäftsbedingungen geändert werden. Wir können diese Konfigurationen nicht fest im Code codieren. Am besten schreiben Sie sie in die Konfigurationsdatei. Sie können diese Informationen beispielsweise in die Datei application.yml schreiben. Wie erhält oder verwendet man diese Adresse im Code? Es gibt 2 Methoden. Methode 1: Wir können den Wert, der dem Schlüssel in der Konfigurationsdatei (application.yml) entspricht, über den mit @Value versehenen Wert erhalten. Diese Methode eignet sich für Situationen, in denen es relativ wenige Mikrodienste gibt: Tatsächlich Projekte, wenn das Geschäft kompliziert ist, Logik

    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung Aug 15, 2023 pm 04:49 PM

    In diesem Artikel wird ein detailliertes Beispiel geschrieben, um über die tatsächliche Entwicklung von Dubbo + Nacos + Spring Boot zu sprechen. In diesem Artikel wird nicht zu viel theoretisches Wissen behandelt, sondern das einfachste Beispiel wird geschrieben, um zu veranschaulichen, wie Dubbo in Nacos integriert werden kann, um schnell eine Entwicklungsumgebung aufzubauen.

    See all articles