Как стать автором
Обновить

Комментарии 36

Интересно, спасибо. Как раз сегодня выложу очередную «чашку», про сервлеты :)
НЛО прилетело и опубликовало эту надпись здесь
Всегда с удовольствием читаю ваши чашки! :)
а почему какие-то странные и томкато-ориентированные валвы, можно ли сделать обычный фильтр?
Пробовал. У меня не получилось.

В фильтр передается ServletResponse, а у него невозможно получить куки. Т.е. и подменить их не удалось.
Чего то не понял как через фильтры не получилось, там же и request тоже есть.
Нужно взять у response (т.е. исходящие) куки и если среди них есть JSESSIONID, установить в этой куке правильный домен.

Но в фильтр передается объект ServletResponse у которого невозможно получить установленные в нем куки.

Возможно я что-то упустил, но с Фильтром у меня ничего не получилось
а если попробовать добавить куку таким образом?

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain){

HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.addCookie(...);
НЛО прилетело и опубликовало эту надпись здесь
Что указать?

Вот строка создающая ту самую куку (из исходников Томката):

Cookie cookie = new Cookie(Globals.SESSION_COOKIE_NAME, session.getIdInternal());

имя домена просто не указывается.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
путь != домен

то что вы прочитали поможет делать разные сессии для www.domain.xx/mail и www.domain.xx/user, к примеру.
НЛО прилетело и опубликовало эту надпись здесь
Ох уж этот томкат. Может кто-нибудь смог «научить» Tomcat 5.5 понимать UTF-8 GET-ы? У меня — ничего не вышло.
Гугл и wiki.apache.org/tomcat/Tomcat/UTF-8 — не предлагать =)

Понял, что там все непросто, когда увидел в исходниках коммент:

/** Default encoding used to convert to strings. It should be UTF8,
as most standards seem to converge, but the servlet API requires
8859_1, and this object is used mostly for servlets.
*/
public static final String DEFAULT_CHARACTER_ENCODING=«ISO-8859-1»;
есть в настройках такой элемент как Context, так вот в этом элементе указать атрибут encodingURI=«UTF-8».
Ой, ошибся надо в server.xml вот так сделать />
в элементе Connector прописываем атрибут URIEncoding=«UTF-8», коннектор должен быть для того порта который принимает запросы
Мда ребят… Вот смотрю я на эти танцы с явой, и как же рад что выбрал путь PHP :)
НЛО прилетело и опубликовало эту надпись здесь
Решение типовой задачи должно быть простым и лаконичным.
НЛО прилетело и опубликовало эту надпись здесь
«… можно было бы просто написать...»

если совсем быть точным написать надо:

if(cc != null) {
for(Cookie i: cc)
if(Globals.SESSION_COOKIE_NAME.equals(i.getName()))
return i;
}

именно из за этого первый вариант мне нравится больше :)

НЛО прилетело и опубликовало эту надпись здесь
да это понятно, но так меньше строк получается :)
Параметр emptySessionPath говорит что кука сессии ставится на путь "/". Это позволяет использовать одну сессию в разных контекстах одного домена.

Задача же — использовать одну сессию для разных доменов. Для этого и бубен.

Может кто-нибудь знает как заставить два приложения томкета (два контекста) рабьотать с одной сессией
т.е чтобы localhost/context1/* и localhost/context2/* имели один jsessionid?

На один камент вверх посмотрите :))

>> Параметр emptySessionPath говорит что кука сессии ставится на путь "/".
>> Это позволяет использовать одну сессию в разных контекстах одного домена.

>> Задача же — использовать одну сессию для разных доменов. Для этого и бубен.
проблема в том что мы не можем использовать cookie, jsessionid передается в url
(wap)
вернее проблема не в самом jsessionid, а в том что сессии в любом случае разные у разных приложений,
объекты в одной сессии не видны в другой и наоборот. нет ли какого механизма поддержки
общего хранилища сессий?
Вроде есть. Но деталей не знаю…

попробуйте в web.xml вписать

… в web.xml вписать

<Context distributable=«true» />
У нас эта проблема решилась с после добавления в контекст атрибута crossContext=«true»
А у нас и так стоял этот атрибут в обоих контекстах,
хотя я не знал что он значит…

А больше ничего не требуется?
У вас и правда оба приложения имеют общую сессию и видят объекты в сессии, которые
туда положило каждое из них?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации