2010-07-10 5 views
1

У нас есть одно веб-приложение, которое создается для обслуживания нескольких доменов TLD региональных регионов. Кроме того, веб-приложение также поддерживает тысячи динамических поддоменов. Примеры включают в себя:GlassFish v3 JSESSIONID Несколько поддоменов и TLD

www.example.com 
www.example.co.uk 
www.example.com.ar 
fred123.example.co.uk <== Thousands of this form 
fred123.p.example.us <== Thousands of this form 

В то время как мы можем понять, что различные домены верхнего уровня домена приводят к появлению новых сеансов проблема начинает появляться с последними 2 приведенных выше примерах, которые также приводят к новым экземплярам сессии. Например, если пользователь:

  1. Переход к: www.example.co.uk новый сеанс создается, а затем ...
  2. Переходов по ссылке: fred123.example.co.uk новой сессии создаются, а затем ...
  3. клики по ссылке: sam99.example.co.uk нового сеанса создается ...

3 щелчков == >> 3 сессии !!!!

Проблема связана с тем, что GlassFish v3 автоматически превращает домен JSESSIONID в полное доменное имя хост-запроса.

Что требуется в том, что имя хоста часть выпарить значение домена, по крайней мере, иметь домены ценности, как:

.example.com 
.example.co.uk 
.example.com.ar 
.example.co.uk <== Thousands of this form 
.p.example.us <== Thousands of this form 

Кто-нибудь знает, как это может быть достигнуто. Я нашел следующий Q & Однако в нашем случае поддоменов ДВА не весь матча:

An issue dealing with JSP Session

Ergo решение статический конфигурирования солнца-web.xml или с использованием раствора Servlet 3.0 не отображается помогать. Также создание оболочки ответа фильтра не работает, так как cookie JSESSIONID назначается на более низких уровнях сервера приложений и не подвергается перехвату веб-приложения.

Единственные другие два варианта, я думаю, я есть:

а) заплата код v3 GlassFish, который устанавливает JSESSIONID значение домена cookie для полного доменного имени, так что некоторые обнажение происходит ИЛИ

б) Делая в Sun Web Server 7.0 обратного прокси-уровня, который мы должны перезаписать значение домена cookie JSESSIONID, возвращенное в заголовке set-cookie, однако я не смог найти примеры того, как это сделать.

Может ли кто-нибудь помочь в решении этой проблемы ? Любые подсказки/помощь будут очень оценены!

+0

Включите ли все эти URL-адреса уникальную веб-страницу? –

+0

Да. Все они сопоставляются с одним webapp. Изначально будет добавлено 8 региональных TLD, и позже будет добавлено больше, и поскольку у нас будет 2 сервера LB'd с 6 экземплярами из старинной рыбы, он начинает довольно неудобно развертывать отдельные webapps с целью предоставления различных значений cookie домена JSESSIONID. Кроме того, независимо от отдельных веб-приложений, все еще проблема для динамических доменов. Мысли ??? – nikolaosinlight

+0

Две области, на которые я смотрю: 1) Некоторые способы получения Sun Web Server 7.0 RP для повторной записи значения домена cookie JSESSIONID, заданного в ответе заголовка, возвращаемом сервером GlassFish v3. Кто-нибудь знает как? 2) Запись модифицированной версии класса в GlassFish v3, которая определяет полное доменное имя значения домена cookie JSESSIONID, чтобы оно могло лучше установить значение. Фактически, именно так файлы cookie в нашем текущем коде вычисляют его значение домена cookie для установки выбранной/определенной локали домена. Кто-нибудь знает, какой класс в коде должен быть включен? – nikolaosinlight

ответ

0

Использование Apache и mod_headers для перезаписи файлов cookie? Best way for allowing subdomain session cookies using Tomcat

+0

Извините - я должен был указать, что мы используем Oracle/Sun Web Server 7.0 для RP-слоя (я упомянул об этом в конце сообщения, но должен был быть более четким). Наша архитектура - это все Oracle/Sun ... и, таким образом, добавление Apache в архитектуру просто для поддержки этого аспекта, к сожалению, не будет. Извинения я не был более ясным, заявив, что в оригинальном посте. Сожалею. – nikolaosinlight

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