2014-09-22 2 views
0

Я столкнулся с очень странным поведением с WildFly 8.x (также тестировался с 8.1 и 8.0). Если я развожу свою WAR как ROOT (установите «/» в качестве контекстного корня в jboss-web.xml), у моих классов ресурсов JAX-RS будут разные идентификаторы сеанса (каждый класс ресурсов будет иметь уникальный идентификатор сеанса). Но на самом деле, если я устанавливаю что-то другое, кроме «/» в качестве корня контекста, все работает так, как я ожидал изначально (каждый класс ресурсов JAX-RS имеет один и тот же сеанс). Я знаю, что службы REST являются апатридами, и мне не нужно беспокоиться о сеансах, но мне так любопытно, почему они так себя ведут. У кого-нибудь есть идеи?Различные идентификаторы сеанса для ресурсов JAX-RS

Спасибо!

Вот пример минимальный проект, где вы можете воспроизвести этот вопрос: https://github.com/aberkes/cdi-sessionscoped-bean-demo

ответ

1

Идея заключается в том, что по умолчанию при развертывании в ROOT, JBoss не использует параметр пути фиксированного печенья. Это делается для случая, когда у вас есть другие приложения, работающие в разных подпапках и требующие их собственных независимых сеансов. Чтобы изменить это поведение, вы можете использовать параметр

<session-config> 
<cookie-config> 
<path>/</path> 
</cookie-config> 
</session-config> 

в вашем web.xml. Тогда все jsessions будут привязаны к корневому пути.

+0

Это был случай! Я подозревал, что это должна быть некоторая (неправильная) проблема конфигурации. Большое спасибо! :) – aberkes