IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java EE Discussion :

Créer des sessions pour chaque client sur mon serveur JAVA


Sujet :

Java EE

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Créer des sessions pour chaque client sur mon serveur JAVA
    Bonjour a tous,
    J'ai créé un serveur Java, grâce à la classe HTTPServer... Je voudrais savoir si c'est possible d'ouvrir une session pour chaque client qui se connecte ..
    Si oui comment faire
    Merci d'avance

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Une session, c'est juste un conteneur d'informations. Et pour pouvoir l'associer à un "utilisateur", il te suffit de définir un identifiant, que cet "utilisateur" retournera dans ses requêtes à chaque appel, pour que le serveur soit capable de retrouver le bon conteneur associé (il en maintient une liste en mémoire). Ce que fait le JSESSIONID, un cookie placé par le serveur dans la première réponse à une requête sans ce cookie, et que le client lui renvoie, et qu'il renvoie au client ensuite... Il faut également prévoir un mécanisme qui permet de supprimer une session (expiration) de la mémoire du serveur.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Les JSESSIONID c'est pas quand on utilise des servlets?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Lowse Voir le message
    Les JSESSIONID c'est pas quand on utilise des servlets?
    JESSIONID c'est le Cookie utilisé par un conteneur de servlet comme Tomcat, pour maintenir la session. Tu peux appeler ton cookie comme tu veux d'ailleurs.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    J'arrive bien à mettre le cookie dans l'entête de ma réponse(il apparait quand j'affiche mon header) mais après dans les prochaines requête il ne me le renvoie pas

    Pour ajouter le cookie à l'entête j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    responseEntete.add("Set-Cookie","ID=Utilisateur1")

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il est renvoyé par le client dans le header "Cookie", et c'est au serveur de le renvoyer systèmatiquement dans les headers sous le header Set-Cookie.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    C'est bien ce que j'ai fait non?

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Lowse Voir le message
    C'est bien ce que j'ai fait non?
    Je ne sais pas : sans voir tout le code qu'il y a derrière responseEntete.add("Set-Cookie","ID=Utilisateur1") et quand tu l'appelles, ni comment tu fais pour vérifier que ton client obtient bien le cookie, ni comment tu fais pour savoir que le client ne renvoie pas la session (dans le header "Cookie").
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    reponseEntête est déclaré de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Headers reponseEntete = exchange.getResponseHeaders()
    requeteEntete de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Headers reponseEntete = exchange.getRequestHeaders()
    J'ajoute un cookie dans l'entête de ma réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reponseEntete.add("Set-Cookie","ID=Utilisateur1")
    Pour afficher mon entête de réponse je fais : Pareil pour la requête.

    Sa m'affiche tous les éléments des entêtes sous forme de ListArray(date,Accept-Encoding,Cache-control...)

    Quand j'affiche mon ID=Utilisateur1 est bien dans reponseEntete mais pas dans requeteEntete.
    Et après chaque requête envoyé j'ai bien ID=Utilisateur1 dans ma réponse quand je parcours les pages du serveur

    J'ai aussi remarqué que Google Chrome n'affiche pas le cookie quand je fais "Inspecter l'élement" et ça que ce soit l'entête de la réponse ou l'entête de la requête

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je ne connais pas le code de la classe HttpServer que tu utilises, mais quand je vois


    Citation Envoyé par Lowse Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Headers reponseEntete = exchange.getResponseHeaders()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Headers reponseEntete = exchange.getRequestHeaders()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reponseEntete.add("Set-Cookie","ID=Utilisateur1")
    je me demande sur quelle responseEntete est fait le add() : sur celle déclarée dans le premier code, ou le second ?

    Ensuite, ne connaissant pas le code de cette méthode, elles pourraient tout aussi bien être comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void add(String jemenfous, String jemenfousaussi) {
         // je ne fais rien et je ne m'en porte pas plus mal
    }

    Citation Envoyé par Lowse Voir le message
    Pour afficher mon entête de réponse je fais : Pareil pour la requête.

    Sa m'affiche tous les éléments des entêtes sous forme de ListArray(date,Accept-Encoding,Cache-control...)


    Quand j'affiche mon ID=Utilisateur1 est bien dans reponseEntete mais pas dans requeteEntete.
    Ok, a priori, la réponse à mes 2 premières remarques est que tu ajoutes bien le header dans la réponse, et que c'est bien stocké quelque part. On ne sait pas si c'est vraiment envoyé dans la réponse.

    Citation Envoyé par Lowse Voir le message
    Et après chaque requête envoyé j'ai bien ID=Utilisateur1 dans ma réponse quand je parcours les pages du serveur
    Où ? Quand tu regardes les headers dans l'outil de développement de ton navigateur ?

    Citation Envoyé par Lowse Voir le message
    J'ai aussi remarqué que Google Chrome n'affiche pas le cookie quand je fais "Inspecter l'élement" et ça que ce soit l'entête de la réponse ou l'entête de la requête
    Ah... donc c'est possiblement non envoyé dans la réponse. Tu devais te faire un petit sniffer http et l'utiliser en proxy, justement pour inspecter ce qu'il s'échange entre client et serveur...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Voici la doc concernant la classe HttpServer : http://docs.oracle.com/javase/8/docs...ttpServer.html

    Je me suis trompé il y a un Header qui s'appelle reponseEntete et l'autre requeteEntete.

    La fonction add prend deux string (le premier le nom le deuxième la valeur)
    C'est a dire si tu fais reponseEntete.add("Content-Type", "image/png"), il va ajouter la ligne "Content-Type : image/png" à l'entête de réponse. C'est une méthode de la classe HTTPServer

    Les entêtes de requête/réponse s'affiche dans la console de Eclipse grâce a System.out.println(reponseEntete.values()) par exemple

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Lowse Voir le message
    Voici la doc concernant la classe HttpServer : http://docs.oracle.com/javase/8/docs...ttpServer.html
    Bah, déjà c'est une abstraction cette classe. Ensuite, tu ne devrais pas utiliser des classes de com.sun. Elles ne font pas parties du JDK standard.

    Et puis, elles sont où les méthodes getResponseHeaders() et getRequestHeaders(), dans cette classe ?

    Citation Envoyé par Lowse Voir le message
    Les entêtes de requête/réponse s'affiche dans la console de Eclipse grâce a System.out.println(reponseEntete.values()) par exemple
    ça ne garantit absolument pas que c'est écrit dans le flux de la réponse.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    getResponseHeader et geRequestHeader font parti de la classe HttpExchange (voir doc : https://docs.oracle.com/javase/7/doc...pExchange.html)

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu suis bien le cycle de vie indiquée dans la documentation de cette classe :

    Citation Envoyé par javadoc
    The typical life-cycle of a HttpExchange is shown in the sequence below.

    1. getRequestMethod() to determine the command
    2. getRequestHeaders() to examine the request headers (if needed)
    3. getRequestBody() returns a InputStream for reading the request body. After reading the request body, the stream is close.
    4. getResponseHeaders() to set any response headers, except content-length
    5. sendResponseHeaders(int,long) to send the response headers. Must be called before next step.
    6. getResponseBody() to get a OutputStream to send the response body. When the response body has been written, the stream must be closed to terminate the exchange.
    En particulier le point 5, avant le point 6...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    mERci je n'avais pas tout mis dans le bon ordre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] impossible de créer des evenement pour mes boutons sur une page asp
    Par Msysteme dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/05/2014, 13h27
  2. Créer des JTexField pour chaque colonne de mon Jtable
    Par virus321 dans le forum Composants
    Réponses: 2
    Dernier message: 29/11/2013, 01h43
  3. Comment créer des variables pour chaque ligne d'une table
    Par Slyvore dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 24/04/2012, 14h24
  4. [Sessions] Comment creer des sessions pour chaque visiteur
    Par developower dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2005, 12h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo