Session Failover not happening in SOA 11.1.1.5 Cluster when stop one Node

Hi,
We have a 2 Node SOA 11.1.1.5 Cluster. We are noticing one issue if when during a request processing if we bring down one Node the whole request fails and we loose the data. Other Node is not taking over the request to finish it. We have Hardware LoadBalancer that routes to one of OHS which internally routs to one of the SOA Servers. But when we shut down one Node right at that moment we are not able to access the service probably the request went to the server that is shutting down. This is the error we see
oracle.fabric.common.FabricInvocationException: Unable to access the following endpoint(s): But when we try it again once the Node is down it works fine.
Wondering if there's any setting we need to do to handle this type of scenario.
Thanks

I cut and paste the description of the note. There is a statement with the cause that states
"This issue happens only when the display name of a NIC configured for migration in nodemanager is null"
and it is a little ambigious. It implies there is a workaround of setting the display name, but doesn't discuss how to apply this workaround; the display name it refers to generated by a code call to the NetworkInterface.getDisplayName() method from the JDK.
I assume that the display name here is the parameter called Interface within the nodemanger.properties, but there is nothing within the note that confirms this, nor if setting this to the NICE name will fix this issue. here is a full list of the nodemanger.propertes file -> http://download.oracle.com/docs/cd/E12840_01/wls/docs103/nodemgr/java_nodemgr.html#wp1068415
I'd download and try the patch in your place; it's a WLS patch (as nodemanager is part of WLS) so shouldn't affect SOA Suite. Failing that, open a SR.

Similar Messages

  • Failover not happening the Oracle RAC 10g

    Hi All,
    I am new to RAC.
    I have installed Oracle RAC 10g on Redhat Linux 4.0. Till yesterday failover was happening that is when i stopped one instance on node01 the vip of node01 was transferred to node02.This was shown using ifconfig -a but now that is now happening.Don't know as what has happened.Can you please help me out
    Below information is given:
    [oracle@node01 ~]$ crs_stat -t
    Name Type Target State Host
    ora.hitesh.db application ONLINE ONLINE node02
    ora....h1.inst application ONLINE ONLINE node01
    ora....h2.inst application OFFLINE OFFLINE
    ora....SM1.asm application ONLINE ONLINE node01
    ora....01.lsnr application ONLINE ONLINE node01
    ora.node01.gsd application ONLINE ONLINE node01
    ora.node01.ons application ONLINE ONLINE node01
    ora.node01.vip application ONLINE ONLINE node01
    ora....SM2.asm application ONLINE ONLINE node02
    ora....02.lsnr application ONLINE ONLINE node02
    ora.node02.gsd application ONLINE ONLINE node02
    ora.node02.ons application ONLINE ONLINE node02
    ora.node02.vip application ONLINE ONLINE node02
    Listner status on node01 is given:
    [oracle@node01 ~]$ lsnrctl status
    LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 06-APR-2013 12:59:29
    Copyright (c) 1991, 2005, Oracle. All rights reserved.
    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
    STATUS of the LISTENER
    Alias LISTENER_NODE01
    Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
    Start Date 06-APR-2013 11:59:03
    Uptime 0 days 1 hr. 0 min. 25 sec
    Trace Level off
    Security ON: Local OS Authentication
    SNMP OFF
    Listener Parameter File /home/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora
    Listener Log File /home/oracle/oracle/product/10.2.0/db_1/network/log/listener_node01.log
    Listening Endpoints Summary...
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.131)(PORT=1521)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
    Services Summary...
    Service "+ASM" has 1 instance(s).
    Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
    Service "+ASM_XPT" has 1 instance(s).
    Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
    Service "PLSExtProc" has 1 instance(s).
    Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Service "hitesh" has 2 instance(s).
    Instance "hitesh1", status READY, has 2 handler(s) for this service...
    Instance "hitesh2", status READY, has 1 handler(s) for this service...
    Service "hiteshXDB" has 2 instance(s).
    Instance "hitesh1", status READY, has 1 handler(s) for this service...
    Instance "hitesh2", status READY, has 1 handler(s) for this service...
    Service "hitesh_XPT" has 2 instance(s).
    Instance "hitesh1", status READY, has 2 handler(s) for this service...
    Instance "hitesh2", status READY, has 1 handler(s) for this service...
    The command completed successfully
    [root@node01 oracle]# crsctl check crs
    CSS appears healthy
    CRS appears healthy
    EVM appears healthy
    [root@node01 oracle]# ps -ef | grep lmon
    oracle 5741 1 0 12:07 ? 00:00:03 ora_lmon_hitesh1
    root 22582 20805 0 13:01 pts/2 00:00:00 grep lmon
    oracle 23643 1 0 11:58 ? 00:00:01 asm_lmon_+ASM1
    Please let me know what information else is required
    Edited by: user12924280 on Apr 6, 2013 12:36 AM

    Since you didn't say "thank you", I assumed my time was of no value to you.
    However, I shall try again.
    There is no relationship between instance failure and VIP failover. How can there be? What if you are running ten instances on each node, and one fails? Would you want the VIP to relocate? And I've already told you how to test it: kill the node. Just reboot it.

  • I have Sun Life Financial bookmarked and when I click onto it, as it is trying to get on the site, the https tool bar goes wonky.  Then the pinwheel comes on and I have to force quit.  This does not happen on our other apple computer only on my new one

    I have not used this app before so please excuse me if I am duplicating my question.  I am trying to get onto one of my books marks but when I click on it, it starts going all wonky in the https bar.  Then the pinwheel comes on.  When I force quit and then go back into Safari it comes up on that company website but a different section that is asking me to check the date on my computer and some other things that could be a problem.  This does not happen on our other mac only my new lap top.  This problems only started this weekend.  Any ideas?

    Thanks for the response.
    I attempted to remove cookies, but I can not identify any of the cookies on the list with the PrimeVest web site. No PrimeVest, no PVs, nothing that looks like it came from them.
    I have also reported the problem to PrimeVest and their tech did answer. He suggested erasing the browsing history (temporary internet files), which I did with no effect. He also had me check for the correct starting page address, which was OK. He stated that they are aware of a problem and it is on their list. No indication of how far down that list though. His only cure was to use IE for now, which I was already doing. Perhaps he can tell me which cookies to remove.

  • Insertion of data to MS SQL Server is not happening via SOA layer

    Hi,
    There is a requirement in our project to take the data from Orcale EBS and insert into a different legacy and it is a MS SQL Server. So it makes it Orcale DB to SQL Server. When i manually insert data to a table in SQL Server it's working fine. When i try to insert the data to the same table using BPEL(SOA 11g), It's giving out an exeception,
    "{http://schemas.oracle.com/bpel/extension}bindingFault" has been thrown.
    Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'insert' failed due to: DBWriteInteractionSpec Execute Failed Exception. insert failed. Descriptor name: [InsertCustomerDataHighJump.TRheemImpCustomer]. Caused by com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'DUAL'.. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. Invalid object name 'DUAL'. 208".
    Any help on this is highly appreciated.
    Thanks,
    Swami

    Hi Vivek,
    I am able to do other operations such as select and update in the SQL server DB. Only insert is giving such a kind of exception.

  • How do I stop calendar from coming on automatically and overiding gmail so that I cannot access it. I can use windows explorer and this does not happen.

    When I use firefox to access my gmail account, the calendar comes on by itself and I then cannot get to my emails. If I get the gmail account by windows explorer this does not happen. What can I do within firefox to stop this from happening. It just started this today.
    == This happened ==
    Every time Firefox opened
    == Today

    I had the Integrated Gmail 2.5.5 addon enabled.
    After disabling the addon the problem is gone.
    Hope it works to you guys.

  • Oracle Applications 11i Load Balancing does not work with RAC one Node

    Hi all,
    Could you help me to resolve this issue.
    Architecture environment is :
    - One APPS tier node
    - Two nodes Oracle Database Appliance (Primary node 1 holds INSTANCE_1 et Secondary node is configurured to holds INSTANCE_2), i.e RAC one Node.
    - The primary node have instance_name SIGM_1 and the secondary node have instance_name SIGM_2, but in RAC one node, the secondary instance is not alive.
    We convert our EBS 11i environment to RAC following note ID Using Oracle 11g Release 2 Real Application Clusters with Oracle E-Business Suite Release 11i [ID 823586.1].
    When testing Database failover, Oracle Applications 11i load balancing does not work anymore.
    The root cause is that, when the primary node of the Rac one node is down, the INSTANCE_NAME_1 is automaically relocating to the surviving node,.
    During test failover, we imagine that when the primary node goes down, the secondary node start or relocate database with instance_name SIGM_2, and in that case the Oracle Applications load balancing works.
    Currently, when the primary node goes down, the instance_name SIGM_1 is relocated on the secondary node, which cause failure of Oracle Applications Load Balancing.
    Thank you for your advice.
    Moussa

    This is something I observed a long time ago for Safari (ie: around version 1). I'm not sure this is Safari, per se, but OpenSSL that is responsible for the behavior. I'm pretty sure Chrome does this and I've seen some Linux browsers do it.
    What I have done at the last two companies I've worked for is recommend that our clients do not use SSL SessionID as the way of tracking sticky sessions on web servers, but instead using IP address. This works in nearly all cases and has few downsides. The other solution is to use some sort of session sharing on your web servers to mitigate the issue (which also means that your web servers aren't a point of failure for your users' sessions). (One of the products I supported had no session information stored on the web servers, so we could safely round-robin requests, the other product could be implemented with a Session State Server... but in most cases we just used IP address to load balance with). The other solution is to configure your load balancer to terminate the SSL tunnel. You get some other benefits from this, such as allowing your load balancer to reduce the number of actual connections to the web servers. I've seen many devices setup this way.
    One thing to consider through this is that - due to the way internet standards work - this really can't be termed a bug on anyone's part. There is no guarantee in the SSL/TLS standards that a client will return the same SSL Session ID for each request and there is not requirement that subsequent requests will even use the same tunnel. Remember, HTTP is a stateless protocol. Each request is considered a new request by the web server and everything else is just trickery to try and get it to work the way you want. You can be annoyed at Safari's behavior, but it's been this way for over 5 years by my count, so I don't expect it to change.

  • "Could not connect to any server in the specified cluster"

    Dear all,
    can anybody help me out? I tried to log on in HFM and get the error message as following:
    "Could not connect to any server in the specified cluster"
    Code: -2147217086
    Description: An error occurred processing the result from the server.
    Trace: Error Reference Number: {1205F141-A444-4750-B3CE-729E53F12279}<BR>Num: 0x80041142;Type: 1;DTime: 1/13/2012 2:00:57 PM;Svr: V-HOISTHYP1;File: CHsxClient.cpp;Line: 850;Ver: 11.1.2.1.000.3082;<BR>Num: 0x80041142;Type: 0;DTime: 1/13/2012 2:00:57 PM;Svr: V-HOISTHYP1;File: CHsxClient.cpp;Line: 3671;Ver: 11.1.2.1.000.3082;<BR>Num: 0x80041142;Type: 0;DTime: 1/13/2012 2:00:57 PM;Svr: V-HOISTHYP1;File: CHFMwManageApplications.cpp;Line: 2722;Ver: 11.1.2.1.000.3082;
    Any idea would be greatful!
    Thanks a lot in advance
    Hoi

    Hi Hoi,
         Financial Management Error "Could not connect to any server in the specified cluster" When Opening Application (Doc ID 742386.1)
         Sporadic "Access Denied" Error Messages Running Financial Reports Against Hyperion Financial Management (Doc ID 753013.1)
         Sporadic "Access Denied" Messages for Reports with Hyperion Financial Management (HFM) Data Source (Doc ID 760412.1)
    Hope this helps,
    Thank you,
    Charles Babu J

  • Failover did not happen when network switch went down!!! PLEASE HELP

    Hi gurus,
    Yesterday one disaster struck my RAC database. We have two node cluster and it is 10.2.0.2, both of them located in different sites, yesterday suddenly power went down and the one of the network switch went down and got destructed, node one of RAC database was connected to that switch, but the failover did not happen to the node two as this should be the case when one node goes down the other should be available for all the node one sessions/connections.
    when I tried to ping/telnet the node 1, it was not happening because the switch was down, the network guyz connected the cables to other switch available. When I connected to the node 1, it was showing "Oracle is not available" message.
    And when I tried the other node, it was the same case but I did not see any error in alert log file. Then my TL restarted both the nodes and then the database was available.
    I am very confused that how the failover did not happen and how the database went down, PLEASE suggest something to how to identifiy what was happened. Thanks & Regards
    Edited by: user1221 on Mar 18, 2009 1:09 AM

    About Oracle RAC ... you have 2 nodes ... You have to connect 4 IPs.
    I mean
    - IP public node1
    - IP public node2
    - IP Virtual node1
    - IP Virtual node2
    When node1 down
    You can not ping "IP public node1", but you should ping "- IP Virtual node1", because it should up on node2.
    But not bind 1521 port.
    Idea about failover
    you have to create new difference Service...on RAC Database!
    and on your client have to set TNS to on failover and balance (if you used OCI), you can use TAF feature
    Example:
    DB =
    (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db01-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = db02-vip)(PORT = 1521)) (FAILOVER=ON)(LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = NEW_SERVICE_DB) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (RETRIES = 180) (DELAY = 5))))
    If you use JDBC, can not use TAF.
    Anyway, I suggest you read more about RAC on http://otn.oracle.com/rac and http://oracleracsig.org
    Good Luck

  • Failover did not happen when one node went down!!! PLEASE HELP

    Hi gurus,
    Yesterday one disaster struck my RAC database. We have two node cluster and it is 10.2.0.2, both of them located in different sites, yesterday suddenly power went down and the one of the network switch went down and got destructed, node one of RAC database was connected to that switch, but the failover did not happen to the node two as this should be the case when one node goes down the other should be available for all the node one sessions/connections.
    when I tried to ping/telnet the node 1, it was not happening because the switch was down, the network guyz connected the cables to other switch available. When I connected to the node 1, it was showing "Oracle is not available" message.
    And when I tried the other node, it was the same case but I did not see any error in alert log file. Then my TL restarted both the nodes and then the database was available.
    I am very confused that how the failover did not happen and how the database went down, PLEASE suggest something to how to identifiy what was happened. Thanks & Regards

    Thanks for your reply,
    after the network switch was replaced we connected to both the nodes and found that the instances are down with no reason given in the Alertlog file. We just restarted both the instances and then the database was up and the clients connected to both the instances with equal sessions on both the instances. I want to know that whether the failover can be done at the application side or it should be done on the database side i,e; in tnsnames.ora file with the required parameters? as in our scenario there is no failover configuration in the tnsnames.ora file.
    Thanks & Regards

  • Session-failover-enabled not working in iWS6 with a FileStore

    I'm trying to use a FileStore to implement session persistence using IWSSessionManager. I have the following in my web-apps.xml:
    <web-app uri="/Banking" dir="c:/java/online">
    <session-manager class='com.iplanet.server.http.session.IWSSessionManager'>
    <init-param>
    <param-name>session-data-store</param-name>
    <param-value>com.iplanet.server.http.session.FileStore</param-value>
    </init-param>
    <init-param>
    <param-name>session-data-dir</param-name>
    <param-value>c:/iplanet/servers/SessionData</param-value>
    </init-param>
    <init-param>
    <param-name>session-failover-enabled</param-name>
    <param-value>false</param-value>
    </init-param>
    </session-manager>
    </web-app>
    I'm seeing the following exception in my log:
    [12/Jun/2002:10:10:56] info ( 320): java.io.NotSerializableException: com.iplanet.server.http.servlet.WebApplication
    at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1148)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
    at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1827)
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:480)
    at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1214)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
    at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1827)
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:480)
    at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1214)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
    at java.util.Hashtable.writeObject(Hashtable.java:764)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1864)
    at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1210)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
    at com.iplanet.server.http.session.IWSHttpSession.writeObject(IWSHttpSession.java:764)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1864)
    at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1210)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
    at com.iplanet.server.http.session.FileStore.save(FileStore.java:167)
    at com.iplanet.server.http.session.IWSSessionManager.update(IWSSessionManager.java:499)
    at com.iplanet.server.http.servlet.NSHttpServletRequest.closeInputStream (NSHttpServletRequest.java:612)
    at com.iplanet.server.http.servlet.NSServletRunner.servicePostProcess(NSServletRunner.java:857)
    at com.iplanet.server.http.servlet.NSServletRunner.invokeServletService(NSServletRunner.java:942)
    at com.iplanet.server.http.servlet.WebApplication.service(WebApplication.java:1065)
    at com.iplanet.server.http.servlet.NSServletRunner.ServiceWebApp(NSServletRunner.java:959)
    Any ideas what's wrong?
    I should note that I don't think it is because I am storing non-serializable things in the session attributes. I think this because originally I was getting an exception that said that a specific attribute wasn't serializable. I changed the class definition of the class I was storing in that attribute to include "implements java.io.Serializable" and that problem went away.

    Hi Sija,
    Can i have detailed scenario in your cluster configuration.
    Means you are saying that going to start cluster package manually, if it is right please make sure that you had the same copy of start, instance profiles of NodeA to Node B. Means you need to maintain two startup, two instance profiles for both nodes. In a normal situation it will picik the profile of node A to start databse from A node. But in a failover situation it will not pick node A profile to start, it should pick Node B s profiles.
    Just make a copy from node A and change the profile name accordingly to Node b. Then try to restart.
    Regards
    Nick Loy

  • Sun Access Manager 2005Q1 session failover is not working

    Hi All
    I m using Sun access manager 2005Q1,message queue 2005Q1, Sun Directory server 5.2 ,BerkelyDb 4.2.52 and radware hardware load balancer with sticky session.
    I m have configured message queue and BerkeleyDB and both are running with any error.
    I m using http://docs.sun.com/source/817-7644/ch5_scenarios.html#wp41008 doc for session failover.
    Simple failover is working fine but the Session failover is not working.
    Any body has done session failover with Sun Access manager 2005 Q1 I m trying to resolve this issue last two month.
    Please it is urgent.

    It works fine in 2005Q4, after applying a patch 120954 if I am not mistaken. But 2005Q4 and 2005Q1 are probably different in terms of session failover (site configuration etc.)
    1. Stop both AM servers
    2. Set logging to debug mode in AMConfig.properties.
    3. Delete / move everything in /var/opt/SUNWam/debug
    4. tail -f /var/opt/SUNWam/debug/amSession
    5. Post that file here... you should be able to see if session failover is enabled etc....
    hope this helps.

  • AM Session Failover - /opt/SUNWam/bin/amsfo stop not working

    Hi,
    I have configured AM session failover. I have verified that server is listening on 7777. However as soon I try to stop smsfo, it is giving error.
    root@fe1 # /opt/SUNWam/bin/amsfo stop
    /opt/SUNWam/bin/amsfo: fe1.test.com:7777,fe2.test.com:7777: not found
    root@fe1 #
    Is it a configuration error?
    Any inputs are really appriciated.
    Thanks and Regards,
    Shashank
    Edited by: shashankj on Jul 7, 2008 9:03 AM

    looks like the script is trying to execute your hostnames as a command. Be sure to properly enclose all the script values in quotations (""). Also add set -x to the script for further troubleshooting

  • Session Failover and Clustering

              Let's say that we have two WebServers (NES) with the weblogic plugin (say WS1 and WS2) and a cluster with two WebLogicCommerce AppServers (say AS1 and AS2). Let's assume that each WebServer and AppServer runs on its own machine (total: 4 machines). Now, let's assume that the WebServer "obj.conf" files (on both WS1 and WS2) are setup so that they point to the servers in the cluster (WebLogicCluster="AS1:7601,AS2:7601").
              When a new request comes in to one of the WebServers (say WS1), the plugin will route it to one of the AppServers using Round-Robin (say AS1). A session will now be initiated in AS1 and it sends a response back to the client.
              Question 1: How does the other proxy in WS2 know that all future requests for this client need to be forwarded to AS1?
              Question 2: For failover, does the cluster automatically replicate the session state existing in AS1 onto AS2 before sending the response (does AS2 automatically become the secondary)?
              Now let's assume that AS1 crashes/dies. When the next request from the client comes to WS1 or WS2, they will forward it to AS1 (assuming that WS2 knows about the client session in AS1) . Since AS1 has crashed, will the client eventually get a timeout error message?
              Question 3: To ensure that the session failover happens so that AS2 gets the request instead (becomes the primary), do we need to setup a WebLogic Proxy Server? If so, why can't the plugins for NES provide the failover themselves?
              Thank you very much for your help!
              Giri
              

              Thank you very much for your responses. It has been very helpful and I am clear on the session/clustering stuff. I have new questions on EJB and clustering which I will post as a separate thread.
              Giri
              "Jason Rosenberg" <[email protected]> wrote:
              >And also, if the browser has cookies disabled, it is important for
              >the app server to embed the WebLogicSession info via url rewriting,
              >otherwise the proxy or NES will not be able to route the session
              >properly.
              >
              >So, in all http responses, be sure to pass the url string through
              >response.encodeURL(). This will do the right thing depending
              >on whether cookies are enabled or not.
              >
              >I've just only recently figured this out. Haven't actually tried it
              >all out yet, so forgive me if it is not quite this simple, but this
              >seems to be the gist of it...
              >
              >Jason
              >
              >
              >"Justin James" <[email protected]> wrote in message news:[email protected]...
              >>
              >> Giri,
              >>
              >> I'm not a weblogic representative, but I tried to replicate this proxing service inside a load balancing switch(BigIP) and I
              >discovered a few things. The weblogic server sets a cookie (WebLogicSession)that the webserver plugin uses to manage the proxying.
              >The cookie (found in the HTTP header information) contains encoded information about the primary and secondary application servers
              >that the session is bound too. Any web server can read the cookie to determine how to dispatch the request to the primary server.
              >If the primary server does not respond, the request is forwarded to the secondary server by the plugin. Regardless of cluster size,
              >the session is replicated to only one other server.
              >>
              >> <[email protected]> wrote:
              >> >Giri Alwar wrote:
              >> >
              >> >> I need a couple of clarifications. First with regard to Question 1, I understand that plugins provide load balancing and
              >failover but what I really was asking is how the plugin in WS2 knows that a session for the client has been initiated in AS1 as a
              >result of WS1 sending the initial request to AS1. If WS2 gets a future request from the client, it needs to know this to send the
              >request to AS1. Does the plugin talk to the cluster to find out if there is a primary and who it is?
              >> >>
              >> >
              >> >> I should have clarified that my other questions pertain to in-memory replication. If I do not persist the session in a database
              >then does the client get an error message (timeout) when AS1 goes down (assuming we use NES with the WebLogic plugin)?
              >> >
              >> >Plugins' know how to route requests based on cookies. If it can't reach the primary server it will automatically try secondary.
              >In your case it doesn't matter if it reaches to proxy 1 or proxy 2, it is still the same.
              >> >
              >> >- Prasad
              >> >
              >> >> To prevent this error message and achieve failover, do I need to use WebLogic as the proxy server? If so, why isn't the NES
              >plugin doing this?
              >> >
              >> >> Thanks.
              >> >> Giri
              >> >>
              >> >> Prasad Peddada <[email protected]> wrote:
              >> >> >Giri Alwar wrote:
              >> >> >
              >> >> >> Let's say that we have two WebServers (NES) with the weblogic plugin (say WS1 and WS2) and a cluster with two
              >WebLogicCommerce AppServers (say AS1 and AS2). Let's assume that each WebServer and AppServer runs on its own machine (total: 4
              >machines). Now, let's assume that the WebServer "obj.conf" files (on both WS1 and WS2) are setup so that they point to the servers
              >in the cluster (WebLogicCluster="AS1:7601,AS2:7601").
              >> >> >>
              >> >> >> When a new request comes in to one of the WebServers (say WS1), the plugin will route it to one of the AppServers using
              >Round-Robin (say AS1). A session will now be initiated in AS1 and it sends a response back to the client.
              >> >> >>
              >> >> >> Question 1: How does the other proxy in WS2 know that all future requests for this client need to be forwarded to AS1?
              >> >> >
              >> >> > Plugin takes care of load balancing and failover, it is all transparent to the client.
              >> >> >
              >> >> >
              >> >> >> Question 2: For failover, does the cluster automatically replicate the session state existing in AS1 onto AS2 before sending
              >the response (does AS2 automatically become the secondary)?
              >> >> >
              >> >> > If you have only two yes it is automatically your secondary. Yes, replication is synchronous.
              >> >> >
              >> >> >>
              >> >> >> Now let's assume that AS1 crashes/dies. When the next request from the client comes to WS1 or WS2, they will forward it to
              >AS1 (assuming that WS2 knows about the client session in AS1) . Since AS1 has crashed, will the client eventually get a timeout
              >error message?
              >> >> >
              >> >> > If you are using some kind of persistence then you will be able to retrieve the session information and since the server
              >is not available the request will automatically failover.
              >> >> >
              >> >> >> Question 3: To ensure that the session failover happens so that AS2 gets the request instead (becomes the primary), do we
              >need to setup a WebLogic Proxy Server? If so, why can't the plugins for NES provide the failover themselves?
              >> >> >
              >> >> > No, you need only one. Either NES or weblogic proxy.
              >> >> >
              >> >> >
              >> >> >> Thank you very much for your help!
              >> >> >> Giri
              >> >> >
              >> >> >- Prasad
              >> >> >
              >> >
              >>
              >
              >
              

  • Session is not Migrated when I use HttpSessionActivationListener .

    Hi all,
    I studied about HttpSessionActivation Listener and in order understand it fully I created a simple program . I studied that the listener will be invoked whenever session attribute is migrated from one JVM to another .
    The following was what I did to understand HttpSessionActivationListener
    Created two instances of Tomcat in a single box.(Actually two services)
    Configured Apache Http Server to point the two instances (Load balancing and fail over) [Using this link|http://thought-bytes.blogspot.com/2007/03/how-to-load-balance-tomcat-55-with.html]
    Created a small web application and deployed in two servers
    Source codes
    ===========
    SessionMigrationTester Listener
    package c6;
    import javax.servlet.http.*;
    import javax.servlet.*;
    import java.io.*;
    public class SessionMigrationTester implements HttpSessionActivationListener,Serializable { //Implemented Serializable Interface
         public void sessionDidActivate(HttpSessionEvent evt){
              System.out.println("========================");
              System.out.println("Session DID Activated --**-- Serializable");
              System.out.println("========================");
         public void sessionWillPassivate(HttpSessionEvent evt){
              System.out.println("========================");
              System.out.println("Session WILL Passivate --**-- Serializable");
              System.out.println("========================");
    }Web.xml
    ========
    <web-app>
    <servlet>
         <servlet-name>SessionTest</servlet-name>
         <servlet-class>c6.SessionExample</servlet-class>     
    </servlet>
    <servlet>
         <servlet-name>servlet3</servlet-name>
         <servlet-class>c6.Servlet3</servlet-class>
    </servlet>
    <servlet-mapping>
         <servlet-name>SessionTest</servlet-name>
         <url-pattern>/sessiontest.do</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
         <servlet-name>servlet3</servlet-name>
         <url-pattern>/servlet3.do</url-pattern>
    </servlet-mapping>
    </web-app>SessionExample.java
    package c6;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    public class SessionExample extends HttpServlet {
         public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException {
              System.out.println("Inside doGet method ");
              PrintWriter out = resp.getWriter();
              resp.setContentType("text/html");
              HttpSession session = req.getSession(false);
              out.println("<html>");
              out.println("<head> ");
              out.println("</head>");
              out.println("<body>");
              out.println("<form >");
              if(session ==null){
                   System.out.println("No Session exists creating a new one ....");
                   session = req.getSession(true);
                   String sessionID = session.getId();
                   if(session.isNew()){
                        session.setAttribute("hello",new SessionMigrationTester());
                        out.println("New session is created ID:- "+sessionID);
                        System.out.println("New session is created ID:- "+sessionID);
              }else {
                   String sessionID = session.getId();
                   session.setAttribute("hello",new SessionMigrationTester());
                   out.println("Old session ID:- "+sessionID);
                   System.out.println("Old session ID:- "+sessionID);
              out.println("Modified ***<br/>");
              out.println("<input type='submit' value='click me' />");
              out.println("<script lang='javascript'>");
              out.println("document.forms[0].action ="+"\""+resp.encodeURL("servlet3.do")+"\"");
              out.println("</script>");
              out.println("</form>");
              out.println("</body>");
              out.println("</html>");
              System.out.println("End of doGet");
         public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException {
              doGet(req,resp);
    }Servlet3.java
    =========
    package c6;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    public class Servlet3 extends HttpServlet {
         public void doGet(HttpServletRequest req,HttpServletResponse resp)
         throws ServletException,IOException {
              HttpSession session = req.getSession(false);
              if(session!=null){
                   System.out.println("Session Already Exists! "+session.getId());
              }else{
                   System.out.println("Session doesn't exists!!!");
         public void doPost(HttpServletRequest req,HttpServletResponse resp)
         throws ServletException,IOException {
              doGet(req,resp);
    }Whenever I stop one instance(say "Tomcat instance 1") I'm getting a message "Session Will Passivated "(which is what I have in overridden sessionWillPassivate method)
    I'm also getting "Session Did Activated" message (overridden in sessionDidActivated method) whenever I start the same instance(say "Tomcat instance 1").
    What I expected
    ============
    After stopping the Tomcat instance (say "Tomcat instance 1") I reloaded the same page expecting this time it will be served by another Tomcat instance(say "Tomcat Instance 2" and I will get "SessionDidActivated" message from "Tomcat instance 2" but it didn't worked as I expected instead the page is served by another Tomcat instance("Tomcat instance 2") but the session is not migrated and I'm not getting "SessionDidActivated" in the new Tomcat instance.
    I also created a new Servlet named as (Servlet3) and modified SessionExample.java to this .so that It contains button and when it clicked it will hit a new Servlet(Servlet 3) but it also doesn't help.
    I'm trying this in a single physical machine with two tomcat instance configured with Apache Http Server .
    Is anything I'm missing ?
    Please clarify me why the session is not migrated .
    Thanks in advance

    Hi ejp,
    One more question I have . Today I tried to find out why the listener class is not invoked(I doesn't get "SessionDidActivated" and "SessionWillPassivate" sysouts from listener class) and found that when I enable clustering in Tomcat it's doesn't works(even though session migrates) and when I switch back to normal mode it does work .
    Following is the fragment I uncomment to enable clustering
    <!--
            <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                     managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                     expireSessionsOnShutdown="false"
                     useDirtyFlag="true"
                     notifyListenersOnReplication="true">
                <Membership
                    className="org.apache.catalina.cluster.mcast.McastService"
                    mcastAddr="228.0.0.4"
                    mcastPort="45564"
                    mcastFrequency="500"
                    mcastDropTime="3000"/>
                <Receiver
                    className="org.apache.catalina.cluster.tcp.ReplicationListener"
                    tcpListenAddress="auto"
                    tcpListenPort="4001"
                    tcpSelectorTimeout="100"
                    tcpThreadCount="6"/>
                <Sender
                    className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                    replicationMode="pooled"
                    ackTimeout="15000"
                    waitForAck="true"/>
                <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
                       filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
                <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
                          tempDir="/tmp/war-temp/"
                          deployDir="/tmp/war-deploy/"
                          watchDir="/tmp/war-listen/"
                          watchEnabled="false"/>
                <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
            </Cluster>
    -->Am just curious to know why it happens like this .
    Can you please clarify me ?

  • Session-timeout is happening intermittently for few users in weblogic.

    Hi,
    We have a war file deployed on a cluster. And from the past 3 days, few users are reporting that the session is getting timed out within 30 mins.
    Actually the session timeout is set for 240 mins(4 hrs), this is defined in the web.xml file.
    And the interesting thing is , this is not happening to everyone. Only few users are facing this session timeout in sometime.
    Any suggestions or such experiences!!!

    Hi,
    What is the exact error that the user is seeing in their browser ?
    Does this happen with all browsers ?
    Thanks,
    Sharmela

Maybe you are looking for