2015-09-07 3 views
1

Мы перенесли наше приложение из JBoss 5.1.0 GA в WildFly 8.2.0. Я заметил, что значение «-Djboss.node.name» (node1) добавляется к файлу cookie JSESSIONID, что вызывает серьезную проблему в моем приложении.Как избежать добавления значения -Djboss.node.name в JSESSIONID

В моем приложении у нас есть класс SessionListener, в котором мы храним сеансы на статической карте, а при выполнении любых операций мы проверяем идентификатор сеанса с карты и загружаем соответствующие данные.

Пожалуйста, найдите нижеприведенный код.

In web.xml 
<listener> 
    <listener-class>com.project.session.ProjectSessionListener</listener-class> 
</listener> 

и код в ProjectSessionListener является

public class ProjectSessionListener extends SeamListener { 
private static final Map<String, HttpSession> sessionMap = new HashMap<String, HttpSession>(); 
............................... 
@Override 
public void sessionCreated(final HttpSessionEvent event) { 
super.sessionCreated(event); 
final HttpSession session = event.getSession(); 
final String sessionId = session.getId(); 
sessionMap.put(sessionId, session); 
} 
} 

При добавлении SessionID в sessionMap нет .node1 добавляется к сессии (abcd1234), поэтому SessionID был спасен без .node1 в карте , но страница входа была успешно загружена.

Когда мы нажимаем «Вход в систему», я заметил, что .node1 был добавлен к JSESSIONID9 (ABCD1234.node1), и при проверке мы пытаемся использовать дату сеанса без .node1, который, очевидно, возвращает null и вызывает исключение ,

I tried 
1) removing the -Djboss.node.name from WildFly confuguration, in this case it is appending my pc name(ABCD1234.sreenath-WIN-7). 

2) Removing <cache name="distributable" passivation-store-ref="infinispan" aliases="passivating clustered"/> from standalone .xml 

Есть ли способ избежать добавления дополнительных символов в JSESSIONID на WildFly?

ответ

0

Вы ни в коем случае не должны полагаться на значение, возвращаемое javax.servlet.HttpSession.getId(). Спецификация сервлета не дает никаких обещаний относительно ее ценности, кроме уникальности. Это значение может и изредка меняться в течение всего сеанса. Это особенно справедливо в кластерной среде.

Если вам нужен ключ для ассоциации сеансов, тогда вы должны создать свой собственный (java.util.UUID.randomUUID()) и сохранить его как атрибут сеанса.

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