0
votes

L'écoute des événements de session ne fonctionne pas après la mise à jour de SpringBoot2

J'ai un projet qui utilise le ressort avec une chaussure à ressort. Il comporte un mécanisme de sécurité personnalisé ainsi que l'écoute de la création de session et Événements de destruction de session: xxx

instancié via:

importer org.springframework.boot.web.servlet.servletContextinitializer; import org.springframework.web.servlet.support.abcastannotationconfigdispatcherservletInitializer; importer échantillon.session.myssessionsListener; xxx

avec: xxx

maintenant j'ai ajouté une configuration pour faire une session d'écriture de printemps- informations à un dB mysql. Pour atteindre que je devais mettre à jour mon pom.xml de Spring-boot 1.5.x à 2.1.3.

Cette session-info-info-rédaction fonctionne bien, mais j'ai reconnu que les événements de session ne sont plus manipulés; Je suppose que la cause réside dans les dépendances car je n'ai pas modifié les pièces de code pertinentes concernant la session - écoutant que j'ai posté ci-dessus, mais je n'ai pas pu le trouver. Je vous serais reconnaissant pour toute l'aide apportée! Je comprendrai 2 versions de POM; D'abord l'actuel, puis un de la dernière commission dans laquelle je peux confirmer que la manipulation d'événements de session fonctionne bien. Version actuelle: xxx

version précédente: xxx

EDIT: J'ai essayé une approche MyTwocents qui n'a rien changé; En outre, il semble que les Onstartup -method ne soit pas exécuté du tout (les impressions à la norme de cette méthode ne s'affichent pas).

Edit2: Je peux confirmer que Le Onstartup -method du servletContextinitializer est en train d'être appelé mais mysessionslistener 's sessionCreated et sessionDestroyed ne sont pas appelés à tout.


0 commentaires

3 Réponses :


0
votes

Peut-être que vous devez faire de cette façon xxx

une note de DOC

Interface utilisée pour configurer un fichier de servlet 3.0+ par programme par programme. Contrairement à WebApplicationInitializer, classes qui mettent en œuvre cette interface (et ne pas impliquer webapplicationInitializer) ne sera pas détecté par SpringServletContaintainerinitializer et donc ne sera pas BootsTrappate automatiquement par le conteneur de servlet.


2 commentaires

Désolé pour la réponse tardive; Malheureusement, votre approche n'a rien changé. Toujours pas d'erreurs ni d'exceptions visibles ... Je suis donc reconnaissant pour toute entrée. Il ne semble même pas exécuter la méthode OnStartup.


J'ai trouvé une solution similaire à Javadevjournal.com/spring-boot/spring -Boot-session-écouteur La différence au code de la question est le supplément @ServletComponentsScan. Peut-être essayer à nouveau avec cette annotation à la place.



0
votes

Je ne suis pas vraiment sûr si cela est une manipulation appropriée de ce problème, mais il s'est avéré que La question elle-même n'est pas appropriée car la raison sous-jacente ne changeait pas de Boot 1 pour démarrer 2 mais plutôt la raison pour laquelle j'ai changé et que je devais utiliser un référentiel de session JDBC.

et dans ce contexte, nous pouvons faire référence à:

https: //docs.spring. IO / Spring-Session / Docs / Current / Référence / HTML5 / # API-JDBCOPERATIONSSESSIONSITORITOR

qui nous dit:

Veuillez noter que cette implémentation ne prend pas en charge la publication d'événements de session.

La question ne correspond donc pas vraiment au problème, mais je voulais poster cela pour les personnes qui pourraient venir d'une direction similaire, même si ce n'est pas une réponse acceptable. Cela signifie également que changer le titre à quelque chose comme "Comment travailler autour ..." préférerait dessiner une post-antécédents très rétrachable que je veux éviter. Je vais ouvrir une question plus appropriée.


0 commentaires

0
votes

Voir si cela fonctionne

public class SessionExpirationListener implements ApplicationListener<SessionDestroyedEvent> {

    @Override
    public void onApplicationEvent(SessionDestroyedEvent event) {
//your code
    }
}


0 commentaires