2009-09-22 3 views
1

Эй, я в кодовой ситуации WTF работает на сервере jsp tomcat и пытается передать данные сеанса (идентификатор пользователя и т. Д.) На php. Я планирую переписать обработку сеанса php с помощью session_set_save_handler() Мой вопрос: где tomcat хранит данные сеанса (harddrive?) и какую кодировку он использует? или я ошибаюсь? Я знаю, что идея mashing php и jsp - это глупо, просто получил это задание, и я тоже злюсь.Как пройти сеанс между tomcat и php

+0

: -o Просто из любопытства, кто просит вас об этом? Ваш руководитель проекта? Или ваш менеджер? :) – OscarRyz

+0

Мой руководитель проекта, да, это ламе проекта :( –

ответ

6

Старайтесь избегать сеансов между различными системами. Вы действительно не можете делиться сессиями между PHP и Java, потому что,

  1. Они работают под разными процессами, может быть, разными машинами. Нет общей памяти.
  2. Их структуры данных сеанса совершенно разные.
  3. Сериализация несовместима.
  4. Различные вкусы печенья, "PHPSESSID" и "JSESSIONID".

Вы в значительной степени должны сами управлять сеансом для обмена сеансами. Это довольно сложно. Ниже приведены компоненты, которые вы должны написать,

  1. Настройка общего хранилища сеансов, например, базы данных или memcached. Сессия хранится в виде большого блоба.
  2. Создайте общие структуры данных сеанса. Я просто использую пары имен-значений. Одно и то же имя должно использоваться в обеих системах, а значения должны быть строковыми (UTF-8).
  3. Используйте обычную сериализацию. Я бы пошел с PHP session_encode(), который довольно легко обрабатывать на Java.
  4. Обращайтесь к своему собственному сеансовому файлу.
+0

# 3, вы можете сериализовать свой объект сеанса с помощью json_en/decode() в обеих системах. –

3

Чтобы решить эту проблему, вы можете попробовать использовать сеансы, основанные на базе данных. Предполагая, что tomcat и apache имеют одни и те же хэши сессии, возможно, их можно будет перенести через серверы? Вам нужно посмотреть в файле конфигурации tomcat, и ДОЛЖНО быть под чем-то с префиксом сессии. Вот где я начну. Как правило, на Linux-сервере Ubuntu он находится под чем-то вроде /etc/apache2/apache2.conf.

Надеюсь, это поможет и удачи!

Kyle

3

Я считаю, что менеджер сеанса по умолчанию для Tomcat будет хранить данные сессии в течение файлов SESSIONS.ser в «рабочем» каталог для вашего приложения.

Вы можете создать и настроить свой собственный менеджер сеансов: http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html

Смежные вопросы