2017-10-10 7 views
0

セッションは、mod_jkロードバランサ(httpd Webサーバから)で動作しません。ただし、アプリケーションサーバーで同じコードが正常に動作しています。続きLiferayセッションmod_jk issue

はworker.propertiesです:ポートレット1内

worker.list=loadbalancer,status,web 

worker.node0.port=8009 
worker.node0.host=10.50.26.19 
worker.node0.type=ajp13 
worker.node0.lbfactor=1 
worker.node0.socket_keepalive=false 

worker.node0.connect_timeout=10000 
worker.node0.prepost_timeout=10000 
worker.node0.socket_timeout=60 

worker.node0.connection_pool_timeout=600 

worker.loadbalancer.type=lb 
worker.loadbalancer.balance_workers=node0 
worker.loadbalancer.sticky_session=1 

Javaコード:ポートレット2で

PortletSession portletSession = actionRequest.getPortletSession(); 
portletSession.setAttribute("username",reg.getFname(), PortletSession.APPLICATION_SCOPE); 

JSPコード:ポートレット次のプロパティの両方で

PortletSession portletSessionobject = renderRequest.getPortletSession(); 
userName=(String)portletSessionobject.getAttribute("username",PortletSession.APPLICATION_SCOPE); 

liferay-portlet.xmlに適用されました

<private-session-attributes>false</private-session-attributes> 

しかし、Webサーバーのポートレット2 JSPページでユーザー名を取得できません。これはnullを戻しています。しかし、アプリケーションサーバーでは、期待どおりの価値が出ています。提案してください。

答えて

0

多くの研究を行った後、解決策が見つかりました。したがって、他人を助けるためにそれを掲示する。問題を引き起こす原因は2つあります。

i)セッションは、httpdサーバーによって上書きされました。実際に問題の原因となったhttpd.confに次のヘッダタグが追加されました。それを削除し、JSESSIONが表示され始めました。

Header set Set-Cookie HttpOnly;Secure 

ii)jvmRouteが定義されていないため、セッションアフィニティが正常に動作しませんでした。その結果、セッションは断続的に終了します。したがって、各インスタンスのstandalone.xmlにおけるサブウェブのためのインスタンスID、ノード0について

、ノード1について

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" instance-id="node0" native="false"> 

を添加

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" instance-id="node1" native="false"> 
関連する問題