Clustering/Session Replication
Hi,
I know that's a fairly basic question, but I just want to make sure I am not missing anything here.
We have an application which runs on a cluster of WebLogics and the user sometimes is requested to sign in again (it seems like it hit another instance and the session is not there).
The admins from Weblogic say there is NO WAY to disable Session Replication when running Weblogic in a cluster, which makes total sense. They say, however, that if the application doesn't serialize its session, then Weblogic can't handle the serialization. In short, they say it's an application issue.
The developers say the application is written properly, and that the problem is in Weblogic's side.
Although I am still a developer (for my own projects), my role here doesn't allow me to look into the code, how can I show the developers that WebLogic is setup correctly and that they need to fix their code?
Regards
Information about session replication can be found here: http://docs.oracle.com/cd/E21764_01/web.1111/e13709/failover.htm#i1024620
it contains a section 'Requirements for HTTP Session State Replication' that might be helpful to you.
Also important to note is, how the load balancer handles session binding and the WebLogic cookie
http://docs.oracle.com/cd/E21764_01/web.1111/e13709/load_balancing.htm#i1026939
Similar Messages
-
CF7 Clustering - session replication broken
Further to my
earlier
thread on CF7 clustering and the "network error",
I think session replication is broken. True, I can't find any
documentation which explains how it is supposed to behave, but this
is what I'm seeing:
If you have a two node cluster, and person A has a session on
node 1 and person B a session on node 2, session variables for each
user DO NOT appear on both nodes
Sessions on one node will only appear on the other when the
first node fails over
Moreover, they will only appear when the user makes another
request
CFLOGIN, when using loginstorage="session" does not replicate.
This means you have to use sticky sessions, and if there is a node
failure, the user will have to login in again. This can be avoided
by using loginstorage = "cookie" but this means the username and
password are stored unencrypted in the cookie.
Problems I have with this:
It's impossible to have a cluster wide view of sessions. E.g.
you can't count how many sessions you have at any one time. Any
code that makes use of being able to dig in to multiple sessions -
made possible by J2EE sessions - will not work reliably.
CFLOGIN is broken. It would be better to not use it for sites
that have to be secure as keeping the unencrypted username and
password in a cookie is very insecure. The only way to protect the
username and password being stored in the cookie is SSL; and that
means that every single item on the site needs to be protected by
SSL to stop the browser from serving up the cookie over an
unprotected connection.
It's not clear what is responsible for replication. If sessions
are only replicated when an instance goes down, rather than
continously, then I assume that the master instance of CF on each
server is responsible for replication. What happens if the server
crashes?Information about session replication can be found here: http://docs.oracle.com/cd/E21764_01/web.1111/e13709/failover.htm#i1024620
it contains a section 'Requirements for HTTP Session State Replication' that might be helpful to you.
Also important to note is, how the load balancer handles session binding and the WebLogic cookie
http://docs.oracle.com/cd/E21764_01/web.1111/e13709/load_balancing.htm#i1026939 -
What are the steps to setup an HTTP Session replication clustering in oc4j9
what are the steps to setup an HTTP Session replication clustering in oc4j9.0.5
Are you sure you have the correct version number for OC4J? Is this a standalone OC4J instance, if it then the steps involved are different from the full stack. Please check the Higher Availibility guide in the documentation on OTN.
Deepak -
Session replication not working with OAM clusters
Hi,
We have a enterprise deployment of OAM 11.1.1.5.0, and we are using a cluster or OAM managed servers. Server#A (fano1) hosts the admin + OAM managed server, server#B (fano2) hosts the second OAM managed server.
What we have noticed in general is that when accessing the OAM admin console (on server#A, fano1), we get prompted to login and then we get a "Error 404--Not Found". It seems that we are getting authenticated against server#B (fano2) and our session is not getting replicated to server#A (fano1). After exactly 60 seconds, if we were to simply reload the URL in the same browser window, we can get in. This is with "database replication of sessions" enabled. If I disable that, then I will never be able to login to the admin console.
The admin server logs contain the error message:
[2011-12-22T16:41:52.471-05:00] [AdminServer] [WARNING] [] [oracle.oam.agent-default] [tid: [ACTIVE].ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: f4a544324f1d0f29:2ccc59c7:13467aaf744:-8000-0000000000000182,0] [APP: oam_admin#11.1.1.3.0] OAM Server request failed: OpCode = 19 [GetSessionInfo], Returned Status = Major code: 71(SessionInvalid) Minor code: 2(NoCode)
[2011-12-22T16:41:52.473-05:00] [AdminServer] [WARNING] [OAMAGENT-00406] [oracle.oam.agent-default] [tid: [ACTIVE].ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: f4a544324f1d0f29:2ccc59c7:13467aaf744:-8000-0000000000000182,0] [APP: oam_admin#11.1.1.3.0] Invalid authentication token: AccessService INVALID_USER_SESSION
One other point is that we are using virtual IPs and each server (Admin + 2 managed servers) is listening to its own virtual IP.
Does anyone have any suggestions on what this could be. My thinking is that coherence based session replication is not working. However I have no way to say that for sure. Is there any way to enable some more logging from either OAM or Coherence that would help verify if sessions are getting replicated or not? I have tried putting the entire system in TRACE:32 but that generates too much data.
Thanks
Aspi Engineer
Putnam InvestmentsDid you get solution to this one.
ThanksKrishna -
Session Replication and Session Timeout -- Urgent
WLS -4.5.1 SP 11
OS - both NT and Sol
HI All
The session does not seems to timeout when running the Weblogic servers in
clustered mode with in-memory session replication on.
This problem seems to be there in version5.1 too , as per another post , it
seems to be solved in WLS5.1 sp 8
Could anyone pls confirm in which patch in WLS 4.5.1 is the problem
addressed . I'm using patch 11 and am getting the problem.
Thanks in advance..
-Surya
Try SP13 and if the problem persists, contact [email protected]
-K
Surya B Maithani wrote:
> WLS -4.5.1 SP 11
> OS - both NT and Sol
>
> HI All
>
> The session does not seems to timeout when running the Weblogic servers in
> clustered mode with in-memory session replication on.
> This problem seems to be there in version5.1 too , as per another post , it
> seems to be solved in WLS5.1 sp 8
>
> Could anyone pls confirm in which patch in WLS 4.5.1 is the problem
> addressed . I'm using patch 11 and am getting the problem.
>
> Thanks in advance..
>
> -Surya
-
Failover is work, but Session replication doesn't work!
Dear all,
My Cluster can failover, but can't session replicate....
I start up the 2 WLS 6.0 and the Web Server, then I visit
http://web_server_ip/myWebApp/SessionServlet serveral times, then the
counter variable in the session raise up, then I down the "target" WLS, then
I try http://web_server_ip/myWebApp/SessionServlet now, I can call but the
counter restart.... so the session seems not yet replicated. what I can
do...?!
My Setup: I setup a Netscape Web Server 3.6.3 as the proxy using libproxy.so
with the cluster setting, and use 2 WLS 6.0 (both are running in 7001,7002)
as the Application Server Cluster (WLCluster). one WLS is on Unix Machine
and the other in on a NT. I set the 2 WLSs: the Primary Group is
"WL_rep_group1", and set the secondary is "WL_rep_group2".
Deployment: I deploy the application "myWebApp" (.war) on the servers unix
and nt, adn also deploy to the cluster WLCluster.
I deploy the examplesWebApp to my created domain "demo", and modify the
weblogic.xml:
<weblogic-web-app>
<session-descriptor>
<session-param>
<param-name>PersistentStoreType</param-name>
<param-value>replicated</param-value>
</session-param>
</session-descriptor>
<jsp-descriptor>
<jsp-param>
<param-name>
pageCheckSeconds
</param-name>
<param-value>
1
</param-value>
</jsp-param>
<jsp-param>
<param-name>
verbose
</param-name>
<param-value>
true
</param-value>
</jsp-param>
</jsp-descriptor>
</weblogic-web-app>
so ... anything I did wrong, so the WLS can't do Session replication??!!
Please Help or Comment!
Thanks in advance!
with thanks,
Alex Wong
Dear Vinod and Kevin,
Some more information that I think it may help.
First, I want to correct 1 point in my previous message, the Replication
Group is "WLRepGroup1" and the Preferred Secondary Group is "WLRepGroup2"
for the 2 machine WLSs.
Second, I found that the Multicast Communication is not functioning becoz
the switch of my office block the 224.0.0.1's communication, so now I added
a hub for this 2 machine, as a result the multicast is wokring... at least
pass the java utils.MulticastTest....
Thrid, after the mutlicast work, I try the SessionServlet, it is working at
beginning... but after some more clicks, one server will cause the following
error (this time crash on x.y.z.b--NT machine)....
-------- (a long list, the IPs are replaced: x.y.z.a UNIX machine, x.y.z.b
NT machine, x.y.z.c My PC)
Screen caption on demo>Servers>wlserver2 (monitoring> cluster)
Unexpected Error
Connected to x.y.z.a:7001 Active Domain: demo Jun 11, 2001 5:06:23 PM
GMT+08:00
An unexpected error was encountered in processing your request.
Exception
java.lang.NullPointerException
<>
Current Date
Mon Jun 11 17:06:23 GMT+08:00 2001
Console Release Build
6.0 Service Pack 2
Console Build
6.0 Service Pack 2 05/24/2001 11:55:28 #117037
Server Release Build
6.0 Service Pack 2
Server Build
6.0 Service Pack 2 05/24/2001 11:55:28 #117037
All Server Product Versions
WebLogic Server Build: 6.0 Service Pack 2 05/24/2001 11:55:28 #117037
WebLogic XML Module: 6.0 Service Pack 2 05/24/2001 12:34:27 #117037
Request Info
Protocol: HTTP/1.1
ServerName: x.y.z.a
ServerPort: 7001
Secure: false
ContextPath: /console
ServletPath: /panels/mbean/Server.jsp
QueryString:
mbean=demo%3AName%3Dwlserver2%2CType%3DServer
PathInfo: null
PathTranslated: null
RequestURI: /console/panels/mbean/Server.jsp
AuthType: null
ContentType: null
CharacterEncoding: null
Locale: zh_TW
Method: GET
Session:
weblogic.servlet.internal.session.MemorySessionData@661950
RequestedSessionId:
OyQxOz4LG0WnLjufYcZDkIGGXIVAhHNASdBLUs2seZnvoQ4RXekX/console
RequestedSessionIdFromCookie: true
RequestedSessionIdFromURL: false
UserPrincipal: system
RemoteUser: system
RemoteAddr: x.y.z.c
RemoteHost: x.y.z.c
Parameters
mbean = demo:Name=wlserver2,Type=Server
Attributes
console.original./console/panels/mbean/Server.jsp.ContextPath = /console
console.original./console/panels/mbean/Server.jsp.Method = GET
console.original./console/panels/mbean/Server.jsp.QueryString =
mbean=demo%3AName%3Dwlserver2%2CType%3DServer
console.original./console/panels/mbean/Server.jsp.RemoteUser = system
console.original./console/panels/mbean/Server.jsp.RequestURI =
/console/panels/mbean/Server.jsp
console.original./console/panels/mbean/Server.jsp.ServletPath =
/panels/mbean/Server.jsp
console.preferences.ContextKey =
/panels/mbean/Server.jsp
javax.servlet.include.context_path = /console
javax.servlet.include.request_uri =
/console/common/requestinfo.jsp
javax.servlet.include.servlet_path =
/common/requestinfo.jsp
javax.servlet.jsp.jspException =
java.lang.NullPointerException
weblogic.httpd.user = system
weblogic.management.console.tags.ContentTag =
java.lang.Object@545f89
weblogic.management.console.tags.HeaderTag =
java.lang.Object@4c5c6c
weblogic.management.console.tags.TabbedDialogTag =
java.lang.Object@7eafc
Headers
Accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Encoding = gzip, deflate
Accept-Language = zh-tw
Connection = Keep-Alive
Cookie =
JSESSIONID=OyQxOz4LG0WnLjufYcZDkIGGXIVAhHNASdBLUs2seZnvoQ4RXekX!143710744761
7668081!-896735123!7001!7002!NONE
Host = x.y.z.a:7001
User-Agent = Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)
BrowserInfo
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)
IE: true
Netscape: false
Supported: true
JavscriptHrefs: false
TableCellClick: true
DocumentReloadedOnResize: false
DropdownStretchable: true
CellSpacingBlank: false
EmptyCellBlank: false
ImgOnclickSupported: true
TableBorderFancy: true
PartialToWideTables: false
Server System Properties
bea.home = /u0/weblogic
file.encoding = ISO8859-1
file.encoding.pkg = sun.io
file.separator = /
java.awt.fonts =
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
java.awt.printerjob = sun.awt.motif.PSPrinterJob
java.class.path =
/u0/weblogic/wlserver6.0:/u0/weblogic/wlserver6.0/lib/weblogic_sp.jar:/u0/we
blogic/wlserver6.0/lib/weblogic.jar:/opt/oracle/product/8.1.6/jdbc/lib/class
es12.zip
java.class.version = 47.0
java.ext.dirs = /u0/weblogic/jdk130/jre/lib/ext
java.home = /u0/weblogic/jdk130/jre
java.io.tmpdir = /var/tmp/
java.library.path =
/u0/weblogic/jdk130/jre/bin/../lib/sparc/hotspot:/u0/weblogic/jdk130/jre/bin
/../lib/sparc::/lib:/usr/local/easysoft/oob/client:/usr/local/easysoft/lib:/
u0/weblogic/wlserver6.0/lib/solaris:/u0/weblogic/wlserver6.0/lib/solaris/oci
816_8:/usr/lib
java.naming.factory.initial =
weblogic.jndi.WLInitialContextFactory
java.naming.factory.url.pkgs = weblogic.jndi.factories
java.protocol.handler.pkgs =
weblogic.utils|weblogic.utils|weblogic.net|weblogic.management|weblogic.net|
weblogic.net|weblogic.utils
java.runtime.name = Java(TM) 2 Runtime Environment,
Standard Edition
java.runtime.version = 1.3.0
java.security.policy =
=/u0/weblogic/wlserver6.0/lib/weblogic.policy
java.specification.name = Java Platform API Specification
java.specification.vendor = Sun Microsystems Inc.
java.specification.version = 1.3
java.vendor = Sun Microsystems Inc.
java.vendor.url = http://java.sun.com/
java.vendor.url.bug =
http://java.sun.com/cgi-bin/bugreport.cgi
java.version = 1.3.0
java.vm.info = mixed mode
java.vm.name = Java HotSpot(TM) Client VM
java.vm.specification.name = Java Virtual Machine
Specification
java.vm.specification.vendor = Sun Microsystems Inc.
java.vm.specification.version = 1.0
java.vm.vendor = Sun Microsystems Inc.
java.vm.version = 1.3.0
javax.rmi.CORBA.PortableRemoteObjectClass =
weblogic.iiop.PortableRemoteObjectDelegateImpl
javax.rmi.CORBA.UtilClass = weblogic.iiop.UtilDelegateImpl
javax.xml.parsers.DocumentBuilderFactory =
weblogic.xml.jaxp.RegistryDocumentBuilderFactory
javax.xml.parsers.SAXParserFactory =
weblogic.xml.jaxp.RegistrySAXParserFactory
jmx.implementation.name = JMX RI
jmx.implementation.vendor = Sun Microsystems
jmx.implementation.version = 1.0
jmx.specification.name = Java Management Extensions
jmx.specification.vendor = Sun Microsystems
jmx.specification.version = 1.0 Final Release
line.separator =
os.arch = sparc
os.name = SunOS
os.version = 5.6
path.separator = :
sun.boot.class.path =
/u0/weblogic/jdk130/jre/lib/rt.jar:/u0/weblogic/jdk130/jre/lib/i18n.jar:/u0/
weblogic/jdk130/jre/lib/sunrsasign.jar:/u0/weblogic/jdk130/jre/classes
sun.boot.library.path =
/u0/weblogic/jdk130/jre/lib/sparc
sun.cpu.endian = big
sun.cpu.isalist = sparcv8plus+vis sparcv8plus
sparcv8 sparcv8-fsmuld sparcv7 sparc
sun.io.unicode.encoding = UnicodeBig
user.dir = /u0/weblogic/wlserver6.0
user.home = /
user.language = en
user.name = root
user.region = US
user.timezone = Asia/Hong_Kong
weblogic.Domain = demo
weblogic.Name = wlserver1
weblogic.security.jaas.Configuration =
weblogic.security.internal.ServerConfig
weblogic.security.jaas.Policy =
/u0/weblogic/wlserver6.0/lib/Server.policy
---------- End of the message -----------
any comment?? is that I deploy on wlserver1, wlserver2, WLCluster cause
error??!! anything I did wrong??!
please help!! or Comment
with thanks,
Alex Wong
"Alex Wong" <[email protected]> ¼¶¼g©ó¶l¥ó
news:[email protected]...
> Hi Vinod and Kevin,
>
> Thanks Vinod first, and after I try the session.getClass(), I get the
> following output
> class weblogic.servlet.internal.session.ReplicatedSessionData
> I think that's means I am using "replicated" already, rite?!
>
> About the License, I cat the license.bea, there is a license to the
> "In-memory Replication - Servlet" and "In-memory Replication - EJB",
however
> it is a eval license but seems not yet expired, so I don't think that is
the
> problem, rite?
>
> And a quick question, you tell me "your configuration looks ok" means the
> H/W configuration, or the WLS configuration??!!
> Maybe I tell you more about my WLS configuration, so that, you can
> determinate where I go wrong. (thanks)
>
>
> Vinod and Kevin
> (Kevin, I am Alex Wong from ASL, if you have any comment, you can simply
> reply my personal email, thx)
>
> Steps I did to create the domain, WLS and Cluster and deploy the .war
> --- on Unix ---
> I create a demo domain and wlserver1 using port 7001 and 7002 by the
> installation program (ip x.y.z.a)
> --- on NT ---
> I create a demo domain and wlserver2 using port 7001 and 7002 by the
> installation program (ip x.y.z.b)
>
> --- on Unix ---
> start the wlserver1 with startWebLogic.sh
>
> --- My PC ---
> go http://x.y.z.a:7001/console
>
> create one more server named "wlserver2" using port 7001 and 7002
> create the cluster named "WLCluster" and fill the the cluster ip
> "x.y.z.a:7001,x.y.z.b:7001"
> fill the multi-cast ip 224.0.0.1
> add the "wlserver1" and "wlserver2" to the "WLCluster"
> stop the unix WLS
> start the unix WLS with startWebLogic.sh
>
> --- on NT ---
> start the WLS with startManagedWebLogic.sh wlserver2 http://x.y.z.a:7001
>
> --- on Unix ---
> install the NES 3.6.3 and create a WEB server instance and modify the
> obj.conf
>
> DETAIL
> ----- start of the obj.conf -----
> Init fn="load-modules" funcs="wl-proxy,wl-init"
> shlib="/opt/nes/plugins/weblogic/libproxy.so"
> Init fn="wl-init"
> .
> .
> .
> <Object name="weblogic" ppath="*">
> Service fn=wl-proxy \
> WebLogicCluster="x.y.z.a:7001,x.y.z.b:7001"
> </Object>
>
> <Object name=default>
> *NameTrans ...
> *NameTrans ...
> *NameTrans ...
> *NameTrans fn=document-root root="/opt/nes/docs"
> Service method="(GET|HEAD|POST|PUT)" type=text/jsp fn=wl-proxy \
> WebLogicCluster="x.y.z.a:7001,x.y.z.b:7001"
> .
> .
> .
> </Object>
>
> <Object name=cgi>
> .
> .
> .
> </Object>
> ----- End of the obj.conf ----- (I suppose will redirect all HTTP request
to
> WLS from NES)
>
> --- My PC ---
> go http://x.y.z.a:7001/console
> assign the DefaultWebApp_wlserver1 to wlserver1
> assign the DefaultWebApp_wlserver2 to wlserver2
> assign the console the wlserver1 only
> assign the certificate to wlserver1, wlserver2, WLCluster
> go SERVER-wlserver1 assign "WLRepGroup1" to Replication Group and
Preferred
> Secondary Group
> go SERVER-wlserver2 assign "WLRepGroup1" to Replication Group and
Preferred
> Secondary Group
>
> --- on Unix ---
> go to ./config/examples/applications/examplesWebApp/WEB-INF
> modify the weblogic.xml
> go to ./config/examples/applications/examplesWebApp
> jar cvf myWebApp.war *
> copy the myWebApp.war to ./config/demo/applications/.
> and ftp myWebApp.war ro (NT)./config/demo/applicaitons/.
>
> --- My PC ---
> And then now, I can visit http://x.y.z.a:7001/console
> now I can configuration the myWebApp.
> assign the myWebApp to wlserver1,wlserver2,WLCluster
>
> --- on Unix ---
> stop the WLS and start with startWebLogic.sh
>
> --- on NT ---
> stop the WLS and start with startManagedWebLogic.sh wlserevr2
> http://x.y.z.a:7001
>
> --- My PC ---
> visit http://x.y.z.a/myWebApp/SessionServlet (this time no port 7001,
becoz
> I want to use the NES web server to proxy the HTTP request)
>
> Finally... I can failover the SessionServlet, SnoopServlet and all the
other
> html, jsp, servlet, but seems can't load-balancing and Session
Persistence.
>
> Is that anything I did wrong, please comment!
>
>
> with thanks,
>
> Alex Wong
>
>
>
> "Vinod Mehra" <[email protected]> ¼¶¼g©ó¶l¥ó
> news:[email protected]...
> > Your configuration looks ok but I guess somehow your clustering is not
> setup
> > properly. Check if all the servers are listeniong on the same port and
> part
> > of
> > the same cluster. Also check if you have clustering license.
> >
> > Make sure your sessions are of type : "replicated". For that print
> > the value of session.getClass(), the name will give you an idea. Check
> > your logs if you got any error message.
> >
> > --Vinod.
> >
> >
> > "Alex Wong" <[email protected]> wrote in message
> > news:[email protected]...
> > > Dear all,
> > >
> > > My Cluster can failover, but can't session replicate....
> > >
> > > I start up the 2 WLS 6.0 and the Web Server, then I visit
> > > http://web_server_ip/myWebApp/SessionServlet serveral times, then the
> > > counter variable in the session raise up, then I down the "target"
WLS,
> > then
> > > I try http://web_server_ip/myWebApp/SessionServlet now, I can call but
> the
> > > counter restart.... so the session seems not yet replicated. what I
can
> > > do...?!
> > >
> > > My Setup: I setup a Netscape Web Server 3.6.3 as the proxy using
> > libproxy.so
> > > with the cluster setting, and use 2 WLS 6.0 (both are running in
> > 7001,7002)
> > > as the Application Server Cluster (WLCluster). one WLS is on Unix
> Machine
> > > and the other in on a NT. I set the 2 WLSs: the Primary Group is
> > > "WL_rep_group1", and set the secondary is "WL_rep_group2".
> > >
> > > Deployment: I deploy the application "myWebApp" (.war) on the servers
> unix
> > > and nt, adn also deploy to the cluster WLCluster.
> > >
> > > I deploy the examplesWebApp to my created domain "demo", and modify
the
> > > weblogic.xml:
> > > -------------------
> > > <weblogic-web-app>
> > >
> > > <session-descriptor>
> > > <session-param>
> > > <param-name>PersistentStoreType</param-name>
> > > <param-value>replicated</param-value>
> > > </session-param>
> > > </session-descriptor>
> > >
> > > <jsp-descriptor>
> > > <jsp-param>
> > > <param-name>
> > > pageCheckSeconds
> > > </param-name>
> > > <param-value>
> > > 1
> > > </param-value>
> > > </jsp-param>
> > > <jsp-param>
> > > <param-name>
> > > verbose
> > > </param-name>
> > > <param-value>
> > > true
> > > </param-value>
> > > </jsp-param>
> > > </jsp-descriptor>
> > >
> > > </weblogic-web-app>
> > > ---------------------
> > >
> > > so ... anything I did wrong, so the WLS can't do Session
replication??!!
> > >
> > >
> > > Please Help or Comment!
> > >
> > > Thanks in advance!
> > >
> > > with thanks,
> > >
> > > Alex Wong
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
> >
>
>
-
Flex session replication among cluster Help needed!
Hi,
I'am using Flex 3, LiceCycle Data Service 2.5.1, JBoss 4.2.1 in a web application. Our JBoss servers are in a cluster. We want to replicate Flex session among cluster, but it doesn't work. Did someone face issue with Flex session replication among application servers?
Thank you for your help
GerardGerard,<br /><br />You will need to cluster the LCDS 2.5.1 instances the same way you clustered <br />JBoss.<br /><br />Check out the "Configuring Data Services" chapter in the Admin guide:<br />http://livedocs.adobe.com/livecycle/es/sdkHelp/programmer/lcds/services_config_4.html<b r /><br />--<br />Tom Jordahl<br />Adobe<br /><br /><br /><[email protected]> wrote<br />> Hi,<br />><br />> I'am using Flex 3, LiceCycle Data Service 2.5.1, JBoss 4.2.1 in a web <br />> application. Our JBoss servers are in a cluster. We want to replicate Flex <br />> session among cluster, but it doesn't work. Did someone face issue with <br />> Flex session replication among application servers?<br />> Thank you for your help<br />><br />> Gerard
-
Problem in accessing JSP in a Clustered Session replicated environment
Hai All!
When i tried to access Index.jsp in a clustered-Session inmemmory replicated environment
it is throwing following exception,,
What Might be the reason..
<Aug 1, 2001 12:11:19 PM GMT+05:30> <Error> <HTTP> <[WebAppServletContext(6493555,DefaultWebApp_ClusterServerA)]
Servlet failed with Exception java.lang.ClassCastException: weblogic.servlet.internal.session.MemorySessionContext
at weblogic.rmi.internal.AbstractOutboundRequest.sendReceive(AbstractOutboundRequest.java:90)
at weblogic.cluster.replication.ReplicationManager_WLStub.create(ReplicationManager_WLStub.java:192)
at weblogic.cluster.replication.ReplicationManager.trySecondary(ReplicationManager.java:587)
at weblogic.cluster.replication.ReplicationManager.createSecondary(ReplicationManager.java:565)
at weblogic.cluster.replication.ReplicationManager.register(ReplicationManager.java:344)
at weblogic.servlet.internal.session.ReplicatedSessionData.<init>(ReplicatedSessionData.java:128)
at weblogic.servlet.internal.session.ReplicatedSessionContext.getNewSession(ReplicatedSessionContext.java:123)
at weblogic.servlet.internal.session.SessionContext.getNewSessionInstance(SessionContext.java:121)
at weblogic.servlet.internal.ServletRequestImpl.getNewSession(ServletRequestImpl.java:1552)
at weblogic.servlet.internal.ServletRequestImpl.getSession(ServletRequestImpl.java:1415)
at jsp_servlet._index._jspService(_index.java:80) at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:213)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:1265)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:1631)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
> <Aug 1, 2001 12:12:37 PM GMT+05:30> <Error> <HTTP> <[WebAppServletContext(6493555,DefaultWebApp_ClusterServerA)]
Servlet failed with Exception java.lang.ClassCastException: weblogic.servlet.internal.session.MemorySessionContext
at weblogic.rmi.internal.AbstractOutboundRequest.sendReceive(AbstractOutboundRequest.java:90)
at weblogic.cluster.replication.ReplicationManager_WLStub.create(ReplicationManager_WLStub.java:192)
at weblogic.cluster.replication.ReplicationManager.trySecondary(ReplicationManager.java:587)
at weblogic.cluster.replication.ReplicationManager.createSecondary(ReplicationManager.java:565)
at weblogic.cluster.replication.ReplicationManager.register(ReplicationManager.java:344)
at weblogic.servlet.internal.session.ReplicatedSessionData.<init>(ReplicatedSessionData.java:128)
at weblogic.servlet.internal.session.ReplicatedSessionContext.getNewSession(ReplicatedSessionContext.java:123)
at weblogic.servlet.internal.session.SessionContext.getNewSessionInstance(SessionContext.java:121)
at weblogic.servlet.internal.ServletRequestImpl.getNewSession(ServletRequestImpl.java:1552)
at weblogic.servlet.internal.ServletRequestImpl.getSession(ServletRequestImpl.java:1415)
at jsp_servlet._index._jspService(_index.java:80) at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:213)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:1265)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:1631)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
Can anybody suggest what went wrong?
TIA Rgds Manohar
[att1.html]
-
Unstable session replication in a HA cluster (CF10)
Hi,
We have tried to create a HA cluster with requests being distributed round robin to N instances of coldfusion, we are NOT using sticky sessions as we are replication session state to all cf instances. What we are seing is that all is fine with low to moderate load, however under heavy load and at random times the replication fails and leads to things in session scope not working. This manifests in users not being able to login to our application (we store a token in session scope to store logged in status).
Again key point, under low to moderate load it all works fine, users are directed to random nodes in the cluster and their session is picked up fine as the session is distributed to all nodes,so pretty confident config is right.
Linux servers using CF10 with update 12 applied. Also running is fusion reactor 5.04 on all instances. Each instance has a 64GB heap, Java 7.0.15 (latest certified).
Firstly apache setup.
workers.properties
worker.list=balancer, jkstatus
worker.jkstatus.type=status
worker.balancer.type=lb
worker.balancer.balance_workers=cfusion_master,cfusion_slave2,cfusion_slave1
worker.balancer.method=R
worker.balancer.sticky_session=False
worker.balancer.ping_mode=A
worker.cfusion_master.type=ajp13
worker.cfusion_master.host=localhost
worker.cfusion_master.port=8012
worker.cfusion_master.max_reuse_connections=250
worker.cfusion_master.lbfactor=100
worker.cfusion_slave2.reference=worker.cfusion_master
worker.cfusion_slave2.port=8014
worker.cfusion_slave1.reference=worker.cfusion_master
worker.cfusion_slave1.port=8013
Now the server.xml from 2 nodes (as an example if I run a 2 node cluster)
One of the configs from a server in the cluster
<Server port="8007" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on">
</Listener>
<Listener className="org.apache.catalina.core.JasperListener">
</Listener>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener">
</Listener>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener">
</Listener>
<GlobalNamingResources>
<Resource description="User database that can be updated and saved" name="UserDatabase" pathname="conf/tomcat-users.xml" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" type="org.apache.catalina.UserDatabase" auth="Container">
</Resource>
</GlobalNamingResources>
<Service name="Catalina">
<Executor name="tomcatThreadPool" minSpareThreads="4" maxThreads="150" namePrefix="catalina-exec-">
</Executor>
<Connector port="8012" protocol="AJP/1.3" connectionTimeout="600000" redirectPort="8445" tomcatAuthentication="false">
</Connector>
<Engine jvmRoute="cfusion" name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase">
</Realm>
</Realm>
<Host name="localhost" autoDeploy="false" unpackWARs="true" appBase="webapps">
<Valve pattern="%h %l %u %t "%r" %s %b" directory="logs" prefix="localhost_access_log." className="org.apache.catalina.valves.AccessLogValve" suffix=".txt" resolveHosts="false">
</Valve>
</Host>
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Manager notifyListenersOnReplication="true" expireSessionsOnShutdown="false" className="org.apache.catalina.ha.session.DeltaManager">
</Manager>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership port="45564" dropTime="3000" address="228.0.0.4" className="org.apache.catalina.tribes.membership.McastService" frequency="500">
</Membership>
<Receiver port="4001" autoBind="100" address="auto" selectorTimeout="5000" maxThreads="6" className="org.apache.catalina.tribes.transport.nio.NioReceiver">
</Receiver>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender">
</Transport>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector">
</Interceptor>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor">
</Interceptor>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="">
</Valve>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve">
</Valve>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener">
</ClusterListener>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener">
</ClusterListener>
</Cluster>
</Engine>
<Connector port="8499" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" executor="tomcatThreadPool">
</Connector>
</Service>
</Server>
Config from one of the other nodes
<Server port="8008" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on">
</Listener>
<Listener className="org.apache.catalina.core.JasperListener">
</Listener>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener">
</Listener>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener">
</Listener>
<GlobalNamingResources>
<Resource description="User database that can be updated and saved" name="UserDatabase" pathname="conf/tomcat-users.xml" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" type="org.apache.catalina.UserDatabase" auth="Container">
</Resource>
</GlobalNamingResources>
<Service name="Catalina">
<Executor name="tomcatThreadPool" minSpareThreads="4" maxThreads="150" namePrefix="catalina-exec-">
</Executor>
<Connector port="8013" protocol="AJP/1.3" connectionTimeout="600000" redirectPort="8446" tomcatAuthentication="false">
</Connector>
<Engine jvmRoute="cfusion" name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase">
</Realm>
</Realm>
<Host name="localhost" autoDeploy="false" unpackWARs="true" appBase="webapps">
<Valve pattern="%h %l %u %t "%r" %s %b" directory="logs" prefix="localhost_access_log." className="org.apache.catalina.valves.AccessLogValve" suffix=".txt" resolveHosts="false">
</Valve>
</Host>
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Manager notifyListenersOnReplication="true" expireSessionsOnShutdown="false" className="org.apache.catalina.ha.session.DeltaManager">
</Manager>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership port="45564" dropTime="3000" address="228.0.0.4" className="org.apache.catalina.tribes.membership.McastService" frequency="500">
</Membership>
<Receiver port="4002" autoBind="100" address="auto" selectorTimeout="5000" maxThreads="6" className="org.apache.catalina.tribes.transport.nio.NioReceiver">
</Receiver>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender">
</Transport>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector">
</Interceptor>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor">
</Interceptor>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="">
</Valve>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve">
</Valve>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener">
</ClusterListener>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener">
</ClusterListener>
</Cluster>
</Engine>
<Connector port="8500" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" executor="tomcatThreadPool">
</Connector>
</Service>
</Server>
So what do i see in the logs?. Well sometimes I see exceptions like this
Mar 05, 2014 9:55:19 PM org.apache.catalina.ha.session.DeltaManager messageReceived
SEVERE: Manager [localhost#/]: Unable to receive message through TCP channel
java.lang.IllegalStateException: removeAttribute: Session already invalidated
at org.apache.catalina.ha.session.DeltaSession.removeAttribute(DeltaSession.java:617)
at org.apache.catalina.ha.session.DeltaRequest.execute(DeltaRequest.java:171)
at org.apache.catalina.ha.session.DeltaManager.handleSESSION_DELTA(DeltaManager.java:1347)
at org.apache.catalina.ha.session.DeltaManager.messageReceived(DeltaManager.java:1293)
at org.apache.catalina.ha.session.DeltaManager.messageDataReceived(DeltaManager.java:1014)
at org.apache.catalina.ha.session.ClusterSessionListener.messageReceived(ClusterSessionListe ner.java:92)
at org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:897)
at org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:878)
at org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:278)
at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelIntercepto rBase.java:84)
at org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageReceived(TcpFailu reDetector.java:113)
at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelIntercepto rBase.java:84)
at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelIntercepto rBase.java:84)
at org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelCoordinator.ja va:253)
at org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(ReceiverBase.java:2 87)
at org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel(NioReplicationTa sk.java:212)
at org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicationTask.java:1 01)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
I'm unsure why this happens as tribes uses certified mesaging so it should have resent right?, in any case I believe I can change it so messages are not sent asynchronously, should sort this out.
I see (good) messages like this
Mar 05, 2014 9:42:19 PM org.apache.catalina.ha.session.DeltaManager startInternal
INFO: Register manager localhost#/ to cluster element Engine with name Catalina
Mar 05, 2014 9:42:19 PM org.apache.catalina.ha.session.DeltaManager startInternal
INFO: Starting clustering manager at localhost#/
Mar 05, 2014 9:42:19 PM org.apache.catalina.ha.session.DeltaManager getAllClusterSessions
INFO: Manager [localhost#/], requesting session state from org.apache.catalina.tribes.membership.MemberImpl[tcp://{192, 168, 128, 50}:4001,{192, 168, 128, 50},4001, alive=68824148, securePort=-1, UDP Port=-1, id={123 126 89 39 96 -59 69 8 -113 79 51 122 25 108 -11 -110 }, payload={}, command={}, domain={}, ]. This operation will timeout if no session state has been received within 60 seconds.
Mar 05, 2014 9:42:20 PM org.apache.catalina.ha.session.DeltaManager waitForSendAllSessions
INFO: Manager [localhost#/]; session state send at 3/5/14 9:42 PM received in 929 ms.
Mar 05, 2014 9:42:20 PM org.apache.catalina.ha.session.JvmRouteBinderValve startInternal
INFO: JvmRouteBinderValve started
So session state dies appear to be flying around the cluster, I do nightly restarts of some of the nodes due to another issue I have with an ever growing heap (separate issue), interestingly I also see nodes leave and join the cluster, again this is good (shows the multicast is working, and also that replication should be working).
Mar 05, 2014 2:30:16 AM org.apache.catalina.tribes.group.interceptors.TcpFailureDetector memberDisappeared
INFO: Verification complete. Member disappeared[org.apache.catalina.tribes.membership.MemberImpl[tcp://{192, 168, 128, 50}:4001,{192, 168, 128, 50},4001, alive=18629101, securePort=-1, UDP Port=-1, id={-2 65 10 -79 53 -75 76 52 -99 63 -90 -120 34 -89 -14 100 }, payload={}, command={66 65 66 89 45 65 76 69 88 ...(9)}, domain={}, ]]
Mar 05, 2014 2:30:16 AM org.apache.catalina.ha.tcp.SimpleTcpCluster memberDisappeared
INFO: Received member disappeared:org.apache.catalina.tribes.membership.MemberImpl[tcp://{192, 168, 128, 50}:4001,{192, 168, 128, 50},4001, alive=18629101, securePort=-1, UDP Port=-1, id={-2 65 10 -79 53 -75 76 52 -99 63 -90 -120 34 -89 -14 100 }, payload={}, command={66 65 66 89 45 65 76 69 88 ...(9)}, domain={}, ]
Mar 05, 2014 2:35:16 AM org.apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
INFO: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{192, 168, 128, 50}:4001,{192, 168, 128, 50},4001, alive=1083, securePort=-1, UDP Port=-1, id={123 126 89 39 96 -59 69 8 -113 79 51 122 25 108 -11 -110 }, payload={}, command={}, domain={}, ]
So stuck now on how to proceed, to establish why at random times the replication fails, leading to cluster collapse. Could it be the size of the session?, I have a few CFCs stuffed into session scope, but perhaps when the load is high there is too many?. Things fail even with a cluster of 2 on one server, initially I had a 8 node cluster on 2 separate machines but when it failed it rolled it back to a cluster of 2 instances on the one server to see if that was stable (its not 100% which is what I need).
Any advice, points gratefully received.So Lynux, that’s an interesting sounding solution. Would be great if it made some difference for Guitsboy. We’ll see. I notice that you say you’ve not yet tried it, though, and fair enough. Thanks for offering it.
But I’m curious: did you ever resolve your original problem? And if not, hopefully you saw the note I just wrote to Guitsboy, asking him something that may well interest you if you still have your problem. On rereading this thread, from back in April, I’ve also had some new thoughts come to mind which I’ll share, if it may help either of you, or others with this seeming same issue.
To remind readers who may not want to review the whole thread, you had said originally that “all is fine with low to moderate load, however under heavy load and at random times the replication fails“, and that this failure “manifests in users not being able to login to our application (we store a token in session scope to store logged in status)”. Then it seems you may have concluded that things were down to the error you were seeing in the logs:
Mar 05, 2014 9:55:19 PM org.apache.catalina.ha.session.DeltaManager messageReceived
SEVERE: Manager : Unable to receive message through TCP channel
java.lang.IllegalStateException: removeAttribute: Session already invalidated
And now guitsboy reports seeing the same error.
But here’s the thing that came to mind for me tonight as I read this: you know, there can be a lot of other reasons that users can feel that they “lose their session”, even without using clustering and replication.
There are issues related sometimes to folks having duplicate session tokens (which can happen for various reasons, including perhaps ones in your code, and maybe only when people visit pages in a certain pattern, so that it happens only occasionally and not always).
Then there is an issue that can arise if you are supporting both http and https requests, where Tomcat (not CF) balks at that (see http://www.petefreitag.com/item/817.cfm, and though he shows a solution in IIS you should be able to implement a similar one in mod_rewrite if that was indeed perhaps your issue).
So I’d be curious if either of you may be in a position to have a failing client use any sort of client tool (like Chrome’s dev tools, or Firebug or Firefox’s new builtin tools, or IE’s f12 dev tools) to watch the communication between the client and the server, and especially to watch the cookies being sent. You guys both mention using jsessionid. Are they the same cookie value on each request? And/or are there more than jsessionid? I’ve seen it happen. There could be differences in the domain property reported for the cookie, the httponly property, the secure property, and so on. And you really do want to view the value sent from the client to the server, because if you view the cookie scope on the server a) it may show values set ON the server rather than sent TO the server, and b) it won’t show these additional cookie properties that were in play on the client. CF only sees the cookie name and value.
I’ve helped many people find out that this was the reason for the seeming session loss (and sometimes it was not all requests by all clients but perhaps only some requests for some clients, all on the same server). At least if this is the crux of the problem, you can then tackle WHY it’s happening. There can be many reasons, from code to configuration, so I won’t belabor them now.
But if either of you may be able to confirm this, perhaps we can help you both get a little closer to a real explanation and solution for your problem. Again, I’m just guessing a bit based on what you’ve written. I realize it may be that none of this is the problem and you have hit some other real unrelated bug. But I really feel confident that you ought to try to check this out first, as it’s indeed been the crux of problems for others, without respect to clustering. It seems worth ruling out, so that you don’t get misled chasing the problem on the assumption that it is about clustering.
As always, hope that helps.
/charlie -
Weblogic 7.0 sp1 cluster - session replication problem
Hi,
I have installed Weblogic 7.0 sp2 on Win NT. To test clustering
feature, I have installed one admin server and added two managed
servers. All are running on same box. I could deploy web application
to the cluster. Connection pools and every other resource is working
well with the cluster. However I couldn't get session replication to
work. I have modified web app descriptor, and set 'persistent store
type' to "replicated".
I accessed application from one managed server, in the middle of
session I modified the port number in the URL to point to other
managed server. It looks like second managed server has no idea of
that session, my app fails because of this.
Could you please help me out in this, Do I need to do any thing in
addition to the above. I couldn't find much in the BEA manual..
Thanks
Rao
For Web application like servlets/JSP, it is better to put one web server as proxy
plugin before your two managed servers and access your application through web
proxy. (You need set session as in-memory replicated either in weblogic.xml or
by console editor). Otherwise, you need record the session cookie from the first
serevr and send the cookie to the second server (not sure if it works). To access
EJB/JMS, use cluster URL like t3://server1:port1,server2:port2.
[email protected] (Rao) wrote:
>Hi,
>
>I have installed Weblogic 7.0 sp2 on Win NT. To test clustering
>feature, I have installed one admin server and added two managed
>servers. All are running on same box. I could deploy web application
>to the cluster. Connection pools and every other resource is working
>well with the cluster. However I couldn't get session replication to
>work. I have modified web app descriptor, and set 'persistent store
>type' to "replicated".
>
>I accessed application from one managed server, in the middle of
>session I modified the port number in the URL to point to other
>managed server. It looks like second managed server has no idea of
>that session, my app fails because of this.
>
>
>Could you please help me out in this, Do I need to do any thing in
>addition to the above. I couldn't find much in the BEA manual..
>
>
>Thanks
>Rao
-
Session replication at every http request
Hi everybody
I'm trying to use ZKoss Framework (www.zkoss.org) to develop a
web application and deploy it in a Clustered WebLogic Server.
The main issue I'm facing is that the "state" of the visual interface
is stored inside the http session, and so, when node that handle
the http request changes, the state is resetted and then the page changes,
even if there was no user intervention.
So I need to replicate the whole session at every http request,
to prevent strange behaviours when the request handler node's changes.
Do you know some settings that will force WebLogic Server to replicate the whole
session at every http request?
Thanks in advance.
bye.Hi Marco,
Yes, You are right But You NEED NOT to put setAttribute("key","value")...code in all your JSPs. because if the Attribute data of Session is changed then Automatically it will be replicated (only the Changed Data and not the Data which is unchanged). Even we need not to worry about replicating the Unchanged Data Again...And WebLogic will take care of ChangedData by itself. There is no other alternate solution available in weblogic to do this...Even no such similar Element available in Deployment descriptors as well.
Actual Link is Broken http://download-llnw.oracle.com/docs/cd/E13222_01/wls/docs90/cluster/failover.html
Any way i am copy-pasting few Lines from E-Docs (the actual link i am not able to find ..but may be u can open the cached page:
http://74.125.153.132/search?q=cache:bxTbqJEsQTsJ:download-llnw.oracle.com/docs/cd/E13222_01/wls/docs90/cluster/failover.html+setAttribute+Session+replication+weblogic&cd=6&hl=en&ct=clnk&gl=in
---------------------------If you are not able to open the link then please refer to the E-Docs copy-paste content below --------------------------
Programming Considerations for Clustered Servlets and JSPs
This section highlights key programming constraints and recommendations for servlets and JSPs that you will deploy in a clustered environment.
Session Data Must Be Serializable
To support in-memory replication of HTTP session states, all servlet and JSP session data must be serializable.
Note: Serialization is the process of converting a complex data structure, such as a parallel arrangement of data (in which a number of bits are transmitted at a time along parallel channels) into a serial form (in which one bit at a time is transmitted); a serial interface provides this conversion to enable data transmission.
Every field in an object must be serializable or transient in order for the object to be considered serializable. If the servlet or JSP uses a combination of serializable and non-serializable objects, WebLogic Server does not replicate the session state of the non-serializable objects.
Use setAttribute to Change Session State
In an HTTP servlet that implements javax.servlet.http.HttpSession, use HttpSession.setAttribute (which replaces the deprecated putValue) to change attributes in a session object. If you set attributes in a session object with setAttribute, the object and its attributes are replicated in a cluster using in-memory replication. If you use other set methods to change objects within a session, WebLogic Server does not replicate those changes. Every time a change is made to an object that is in the session, setAttribute() should be called to update that object across the cluster.
Likewise, use removeAttribute (which, in turn, replaces the deprecated removeValue) to remove an attribute from a session object.
Note: Use of the deprecated putValue and removeValue methods will also cause session attributes to be replicated.
Thanks
Jay SenSharma
Edited by: Jay SenSharma on Feb 11, 2010 10:24 PM
Edited by: Jay SenSharma on Feb 11, 2010 10:26 PM -
Strange errors in session replication
I get following errors in session replication :
weblogic.utils.NestedError: Tried to update secondary, but it thought
it was the primary
- with nested exception:
[weblogic.cluster.replication.BadStatusException: updateSecondary
found
-148099416498695151 but it is not the primary]
Using Weblogic451, SP7 on Solaris 2.6.
Any clues ??
-Kuntal Shah.
Hello,
> > Alteon is set to use "permanent hashing" to route the client into
> > the same server in each request.
>
> How do you expect the switch to know about the secondary node
> if the primary fails? This information is stored in the URL and
> parsed by a proxy.
It took a couple of days and fair amount of documentation to understand
the behaviour of the web cluster...;-)
We changed the configuration to include two proxy servers between the
Alteon switch and web cluster, but we ended up with a different problem.
The setup at the moment is:
- Sun Solaris 2.6, native threads, JDK 1.1.7B_008
- two WLS 4.51 SP7 running in cluster using in-memory replication
- only servlets deployed in the servers
- Two WLS proxies between the webcluster and alteon switch. Both proxies are
configured to use both of the web servers. they do not belong to the web
cluster.
The proxies are configured in the following way:
weblogic.httpd.session.enable=true
weblogic.httpd.session.timeoutSecs=1800
weblogic.httpd.session.invalidationIntervalSecs=600
weblogic.httpd.session.URLRewriting.enable=true
weblogic.httpd.session.cookies.enable=true
weblogic.httpd.session.cookie.maxAgeSecs=-1
weblogic.httpd.session.cookie.domain=some.domain.name
weblogic.httpd.register.cluster=weblogic.servlet.internal.HttpClusterServlet
weblogic.httpd.initArgs.cluster=defaultServers=x.y.z.a1:9001|x.y.z.a2:9001
weblogic.httpd.defaultServlet=cluster
weblogic.allow.execute.weblogic.servlet=everyone
Probably most of the configuration parameters are not necessary, can
somebody tell me which are
and which are not?
The servers in the web cluster are configured in the following way:
The following parameters are in the start-up script of the servers:
-Dweblogic.cluster.enable=true \
-Dweblogic.system.name=somehost \
-Dweblogic.cluster.name=someclustercluster \
-Dweblogic.cluster.multicastAddress=237.0.0.1 \
-Dweblogic.system.bindAddr=x.y.z.a1 \
-Dweblogic.system.nativeIO.enable=true \
-Dweblogic.debug.replication=1 \
And the following are in the cluster-wide properties file:
weblogic.httpd.clustering.enable=true
weblogic.httpd.session.persistence=true
weblogic.httpd.session.persistentStoreType=replicated
weblogic.httpd.session.enable=true
weblogic.httpd.session.timeoutSecs=1800
weblogic.httpd.session.invalidationIntervalSecs=600
weblogic.httpd.session.URLRewriting.enable=true
weblogic.httpd.session.cookies.enable=true
weblogic.httpd.session.cookie.domain=some.domain.name
The IP-address of the Alteon box in front of the proxies is bound to
'some.domain.name'.
The first problem seems to be very poor performance. The overall throughtput
is vveeeerrryyy slow, comparing
to the configuration where there is no proxy sitting in front of the
cluster. Furthermore, at some stage the proxy
starts to print out error messages: java.lang.InvalidStateException: broken
pipe [...] . After those exceptions no
client get any response anymore.
Could someone give some hints what are the most essential items in the
weblogic.properties -file for the
proxy server? Also, if someone has some experience from setting up a
configuration similar to ours: one hardware
load-balancer in front of two proxies, and eventually two web servers
running in a web cluster.
Cheers,
Jarno.
-
I have multi server environment. Two phisical servers.
Balanced by a hardware load balancer. Each of the server have
multiple instances of ColdFusion. Main instance (cfusion), and
cf_instance_server1_id_1 and cf_instance_server2_2.
CFUSION instance is used as administrative instance only,
other two instances are hosting independent applications.
cf_instance_server1_id_1 is clustered with
cf_instance_server2_id_1, same applies for second instance.
jrun/logs folder is filling up fast with following error
jsession is on.
Please adviseMikkhait wrote:
> CFUSION instance is used as administrative instance
only, other two instances
> are hosting independent applications.
cf_instance_server1_id_1 is clustered
> with cf_instance_server2_id_1, same applies for second
instance.
> 11/07 10:16:39 error Setup of session replication
failed.
> [1]java.net.ConnectException: Connection refused:
connect
You have a network issue. Make sure there are no firewalls
between both
servers and your routing is set up correctly. If that doesn't
work, we
need a dump of the route table, the interface configuration
and the
overview of instances from the cluster manager.
Jochem
Jochem van Dieten
Adobe Community Expert for ColdFusion -
Session Replication doesn't work when using a custom Unicast Channel
Hello!
After configure a WLS Cluster for an WebApp with session replication support enabled I faced some issues with cluster configuration.
My LAB env used for this configurations is:
One Solaris 10 SPARC box.
-- One WLS 11g (10.3.6) domain with:
---- 4 Managed servers:
---- Admin server
---- server-1
---- server-2
---- Proxy Server (HttpClusterServlet)
--- 1 Cluster composed by:
---- server-1
---- server-2In that setup I noticed if I define a custom network channel for servers ( server>protocols>channels ) in the cluster and set Cluster Messaging Mode as Unicast* in the Cluster config ( Cluster>Configuration>Messaging>Messaging Mode ), so the session state replication does not work.
When I enable the cluster replication debug for managed servers the following messages appears:
<> <> <1358966729933> <BEA-000000> <[roid:-1772481434088297851] Creating primary for application key /webapp>
####<Jan 23, 2013 4:45:29 PM BRST> <Debug> <ReplicationDetails> <de25503> <server-1> <[ACTIVE] ExecuteThread: '5' for queue: > 'weblogic.kernel.Default (self-tuning)'> <<ano
nymous>> <> <> <1358966729958> <BEA-000000> *<Has secondary servers? false>*
####<Jan 23, 2013 4:45:29 PM BRST> <Debug> <ReplicationDetails> <de25503> <server-1> <[ACTIVE] ExecuteThread: '5' for queue: >'weblogic.kernel.Default (self-tuning)'> <<ano
nymous>> <> <> <1358966729959> <BEA-000000> *<Current secondary server? null>*
####<Jan 23, 2013 4:45:29 PM BRST> <Debug> <Replication> <de25503> <server-1> <[ACTIVE] ExecuteThread: '5' for queue: >'weblogic.kernel.Default (self-tuning)'> <<anonymous>
<> <> <1358966729959> <BEA-000000> <[roid:-1772481434088297851] Unable to create secondary on null>
####<Jan 23, 2013 4:45:31 PM BRST> <Debug> <ReplicationDetails> <de25503> <server-1> <[ACTIVE] ExecuteThread: '5' for queue: >'weblogic.kernel.Default (self-tuning)'> After eliminate all possible issues with my webapp (serialization, weblogic descriptor configuration, etc) and try many cluster network configurations I noticed that this problem only occurs when I use Unicast for Cluster's Messaging.
At the end of the day I really would like to understand why the session replication only works for Cluster's Messaging using Multicast mode. I read a lot the WLS docs (specifically the cluster/network topics) [1][2], but I can't find an official explanation about this.
Can someone help me understand this behavior?
Many thanks.
[1] http://docs.oracle.com/cd/E15523_01/web.1111/e13701/network.htm
[2] http://docs.oracle.com/cd/E15523_01/web.1111/e13709/setup.htmI have Fluxbox started with Slim and .xinitrc. Dbus works only with:
exec ck-launch-session startfluxbox
you need run Openbox with ck-launch-session:
exec ck-launch-session openbox-session
Bye!! -
Sun java System Web Server 7.0 up2 session replication setting
hi ....
Following the standard example of reverse proxy and 2 cluster nodes with session replication
I get the following starting message
info ( 3355): CORE5076: Using [Java HotSpot(TM) Server VM, Version 1.5.0_12] from [Sun Microsystems Inc.]
[07/Aug/2008:15:26:45] warning ( 3355): REPL0081: No backup instance configured for replication service. Disabling replication service
[07/Aug/2008:15:26:47] info ( 3355): WEB0100: Loading web module in virtual server [mycluster8087] at [myweb]
[07/Aug/2008:15:26:48] warning ( 3355): WEB9200: sun-web.xml DTD Version with public ID = [-//Sun Microsystems, Inc.//DTD Application Server 8.1 Servlet 2.5//EN] and system ID = [http://www.sun.com/software/appserver/dtds/sun-web-app_2_4-1.dtd] not found in the local respository. Using DTD version with system ID = [http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd] instead.
[07/Aug/2008:15:26:48] warning ( 3355): WEB7204: Application [myweb] is configured with persistence-type [replicated] but Session Replication is not enabled on this instance; falling back to persistence-type [memory]
[07/Aug/2008:15:26:49] info ( 3355): PWC3031: Security role name tomcat used in an <auth-constraint> without being defined in a <security-role> in context [myweb]
[07/Aug/2008:15:26:49] info ( 3355): PWC3031: Security role name role1 used in an <auth-constraint> without being defined in a <security-role> in context [myweb]
[07/Aug/2008:15:26:49] info ( 3355): HTTP3072: http-listener-1: http://mycluster8087:8087 ready to accept requests
[07/Aug/2008:15:26:49] info ( 3355): CORE3274: successful server startup
[07/Aug/2008:15:27:37] info ( 3355): CORE5073: Web server shutdown in progress
********** sun-web.xml ***************
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server
8.1 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_4
-1.dtd">
<sun-web-app>
<session-config>
<session-manager persistence-type="replicated"/>
</session-config>
</sun-web-app>
** path : dir-root/https-[instance-name]/web-app/[instance-name]/myweb/WEB-INF/sun-web.xml setting ...
Why is it a case a session replication doing not become?
Is it a case one a mistake by a setting?Try this blog [http://blogs.sun.com/nsegura/entry/h2_session_replication_and_lightweight|http://blogs.sun.com/nsegura/entry/h2_session_replication_and_lightweight]
4. Enabling Session Replication
Now that we deployed our web application, we need to enable the session replication feature in the configuration. This will start the session replication services in each instance. We can do this using the CLI administration:
wadm> set-session-replication-prop --config=mycluster enabled=true
CLI201 Command 'set-session-replication-prop' ran successfully
wadm> deploy-config mycluster
CLI201 Command 'deploy-config' ran successfully
Maybe you are looking for
-
Hi Gurus I want to change the description of the "Search: Service Order" view which is visible from the WEB UI. I would have thought modifying the Logical Link would have made this possible. Is this only possible via Custom Code? If so where must I m
-
Hi , I have created SNMP Probe based monitor to check the Total RAM free on certain Network devices. I have total 16GB RAM space and i want to alert if lesser than 3 GB of Total RAM. I had configured /DataItem/SnmpVarBinds/SnmpVarBind[1]/Value lesse
-
NSButton Key Equivalent bug in Interface Builder 3.1?
We are supposed to be able to "... select the [Momentary Push In] button and open the attributes pane of the inspector. ... click in the Key Equiv. field, and type the key or key combination you want to associate with the button.' In order to associa
-
Warnings over the calculate members in BPC 7.5 NW sending data
Hello, We get warnings over the calculate members on input schedules when we send data to the data base. The input schedules were built in the BPC NW 7.0 and afterwards we migrated to the BPC NW 7.5 version. In case we build a new input shcedule from
-
APP-ALR-04120 error while verifying the Alert Query
I am getting APP-ALR-04120 error: An Invalid number of outputs was found in SQL Statements. But I am not seeing any issues in the SQL. SELECT h.order_number ORDER_NUMBER ,hu.name NAME ,h.header_id header_id ,(l.line_number||'.'||l.shipment_number||'.