2009-09-22 11 views
1

Hé, je suis dans une situation de code WTF travaillant sur un serveur jsp tomcat et essayant de transmettre des données de session (identifiant d'utilisateur, etc.) à php. J'ai l'intention de réécrire la manipulation de session php avec session_set_save_handler() ma question est où tomcat stocke-t-il les données de session (disque dur?) et quel type d'encodage utilise-t-il? ou suis-je sur le mauvais chemin? Je sais que l'idée de mashing PHP et JSP est stupide vient d'obtenir cette affectation et je suis énervé aussi.Comment passer une session entre tomcat et php

+0

: -o Juste par curiosité, qui vous demande cela? Votre chef de projet? Ou votre manager? :) – OscarRyz

+0

Mon chef de projet, oui c'est ce boiteux d'un projet :( –

Répondre

6

Essayez d'éviter des sessions entre les différents systèmes. Vous ne pouvez pas vraiment partager des sessions entre PHP et Java parce que,

  1. Ils fonctionnent sous différents processus, peut-être différentes machines. Il n'y a pas de mémoire partagée.
  2. Leurs structures de données de session sont totalement différentes.
  3. La sérialisation n'est pas compatible.
  4. Différentes saveurs de cookies, "PHPSESSID" et "JSESSIONID".

Vous avez à peu près faire vous-même la gestion de session pour partager des sessions. C'est plutôt compliqué. Voici les composants que vous devez écrire,

  1. Configurez un magasin de session commun, comme un DB ou memcached. La session est stockée en tant que gros blob.
  2. Concevoir une structure de données de session commune. J'utilise juste des paires nom-valeur. Le même nom doit être utilisé sur les deux systèmes et les valeurs doivent être une chaîne (UTF-8).
  3. Utilisez une sérialisation commune. J'irais avec PHP session_encode(), qui est assez facile à gérer sur Java.
  4. Gérez votre propre cookie de session.
+0

# 3, vous pourriez sérialiser votre objet de session avec json_en/decode() sur les deux systèmes. –

3

Vous pouvez essayer d'utiliser des sessions pilotées par base de données pour résoudre ce problème. En supposant que Tomcat et Apache ont les mêmes hachages de session, il peut être possible de les transférer entre serveurs? Vous devez regarder dans le fichier de configuration de tomcat et il DEVRAIT être sous quelque chose préfixé par la session. C'est là que je commencerais. En règle générale, sur un serveur Linux Ubuntu, ce serait sous quelque chose comme /etc/apache2/apache2.conf. J'espère que cela aide et bonne chance!

Kyle

3

Je crois que le gestionnaire de session par défaut pour Tomcat stocker les données de session dans un fichier SESSIONS.ser dans le répertoire « travail » pour votre application.

Vous pouvez créer et configurer votre propre gestionnaire de session: http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html

Questions connexes