相同的应用程序部署在两个不同的websphere 8配置文件共享会话中

时间:2014-04-22 09:26:49

标签: websphere ibm-mq websphere-8

我有一个应用程序WAR。我在Websphere 8.0.0.0上创建了两个配置文件AppSrv01,AppSrv02。

我的应用程序在struts 1.1上具有MQ连接,J2ee应用程序。

我已将服务器AppSrv01上的WAR部署为上下文A,将AppSrv02部署为上下文B.

我的应用程序中有会话监听器,它会记录总可用会话。

情景如下......

登录并登录url localhost:9082 / A,转到其中的某个页面。

进入并登录url localhost:9082 / B,在同一浏览器的另一个标签页面中转到其中的某个页面。

转到网址localhost:9082 / A,点击现有网页上的部分链接或网址。

来自服务器的远程调试,当它来到SessionListener时......它显示在给定堆栈下面

Daemon Thread [WebContainer : 10] (Suspended (breakpoint at line 24 in SessionCounterListener)) 
SessionCounterListener.sessionCreated(HttpSessionEvent) line: 24    
WasHttpSessionObserver(HttpSessionObserver).sessionCreated(ISession) line: 111  
SessionEventDispatcher.sessionCreated(ISession) line: 98    
SessionManager.createISession(String, int, boolean) line: 268   
SessionManager.createSession(ServletRequest, ServletResponse, SessionAffinityContext, boolean) line: 640    
WsSessionContext(SessionContext).getIHttpSession(HttpServletRequest, HttpServletResponse, boolean, boolean) line: 485   
WsSessionContext(SessionContext).getIHttpSession(HttpServletRequest, HttpServletResponse, boolean) line: 419    
SRTRequestContext.getSession(boolean, WebApp) line: 104 
SRTServletRequest.getSession(boolean) line: 2099    
SRTServletRequest.getSession() line: 2083   
RequestProcessor.processLocale(HttpServletRequest, HttpServletResponse) line: 631   
RequestProcessor.process(HttpServletRequest, HttpServletResponse) line: 230 
ActionServlet.process(HttpServletRequest, HttpServletResponse) line: 1482   
ActionServlet.doPost(HttpServletRequest, HttpServletResponse) line: 525 
ActionServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 595   
ActionServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 668   
ServletWrapperImpl(ServletWrapper).service(ServletRequest, ServletResponse, WebAppServletInvocationEvent) line: 1147    
ServletWrapperImpl(ServletWrapper).handleRequest(ServletRequest, ServletResponse, WebAppDispatcherContext) line: 722    
ServletWrapperImpl(ServletWrapper).handleRequest(ServletRequest, ServletResponse) line: 449 
ServletWrapperImpl.handleRequest(ServletRequest, ServletResponse) line: 178 
WebAppFilterManagerImpl(WebAppFilterManager).invokeFilters(ServletRequest, ServletResponse, IServletContext, RequestProcessor, EnumSet<CollaboratorInvocationEnum>) line: 1020  
CacheServletWrapper.handleRequest(ServletRequest, ServletResponse) line: 87 
WSWebContainer(WebContainer).handleRequest(IRequest, IResponse) line: 883   
WSWebContainer.handleRequest(IRequest, IResponse) line: 1659    
WCChannelLink.ready(VirtualConnection) line: 195    
HttpInboundLink.handleDiscrimination() line: 452    
HttpInboundLink.handleNewRequest() line: 511    
HttpInboundLink.processRequest() line: 305  
HttpInboundLink.ready(VirtualConnection) line: 276  
NewConnectionInitialReadCallback.sendToDiscriminators(VirtualConnection, TCPReadRequestContext, boolean) line: 214  
NewConnectionInitialReadCallback.complete(VirtualConnection, TCPReadRequestContext) line: 113   
AioReadCompletionListener.futureCompleted(IAbstractAsyncFuture, Object) line: 165   
AsyncFuture(AbstractAsyncFuture).invokeCallback(ICompletionListener, AbstractAsyncFuture, Object) line: 217 
AsyncFuture(AsyncChannelFuture).fireCompletionActions() line: 161   
AsyncFuture.completed(long) line: 138   
ResultHandler.complete(AsyncFuture, int, int) line: 204 
ResultHandler.runEventProcessingLoop(boolean) line: 775 
ResultHandler$2.run() line: 905 
ThreadPool$Worker.run() line: 1648  

它正在创建另一个会话实例。需要了解它为什么要创建另一个实例。

2 个答案:

答案 0 :(得分:0)

当您在IE中打开选项卡时,对于IE同一会话。因此,每个域只有一个cookie JSESSIONID。

当你转到localhost:9082/A时,你JSESSIONID就像SESSIONID-A一样。

当你转到localhost:9082/B时,你JSESSIONID就像SESSIONID-B一样。

因此,当您在AppSrv01上访问应用程序时,JSESSIONID转到AppSrv01的是SESSIONID-B。 Appserver不知道此会话ID,因此它认为它是新用户并创建会话。

尝试打开IE-&gt;档案 - &gt;新会话并访问AppSrv02上的应用程序您不会遇到上述问题。

如果您有类似IEWATCH或Fidler的内容,您将能够看到来自客户端/浏览器的JSESSIONID

答案 1 :(得分:0)

还有一个设置HttpSessionIdReuse 可能也可以提供帮助。我知道它适用于同一Cell中的多个服务器,但我不确定它是否适用于Profiles。

http://www-01.ibm.com/support/docview.wss?uid=swg21210881