Are Session Persistence And Clustering Inter-related?

Hi,
          I'm attempting to set up session persistence (via jdbc) on WL 4.03. I have
          configured weblogic.properties according to the admin guide, and I've
          written a very simple test servlet. However, whenever I attempt to save a
          value with session.putValue(), the following exception is thrown:
          "java.rmi.RemoteException: javax.ejb.FinderException: Refresh:
          ClusteredSession:
          308978692445-1/-1094565652488309727/-1062731518/4/7011/7011/7012/7012 not
          found"
          The WL instance I am using is not part of a cluster. Is clustering
          required for session persistence? If not, should I be using something other
          than the normal HttpSession class?
          Thanks,
          John
          

Please disregard. The problem was due to an error in the definition of the
          WL_SERVLET_SESSIONS table.
          

Similar Messages

  • Types of session persistence in clustering

    does anybody know what are the types of session persistence in clustering(In-memory replication,Database persistence etc..)
    what is the advantages and disadvantages of each type?
    we r using oracle appserver 10.1.2.

    Hi,
    HttpSession replication is little different from JNDI replication. In JNDI replication the JNDI objects are binded(Replicated) to all the members JNDI tree. But in case of Http Session Replication the HttpSession Object gets binded only to the Primary and Secondary JVM (WebLogic Instances). So if both Promary and Secondary WebLogic Server Goes Down then it is *"DISASTER"* and you cannot prevent the Disasters when it happens.
    But you can minimize the Disaster effects by chosing *"Using Replication Groups"*...It means you can decide in which all nodes of the cluster you want your Secondary HttpSession should be replicated.... Please refer to : http://download.oracle.com/docs/cd/E12840_01/wls/docs103/cluster/failover.html
    By default, WebLogic Server attempts to create session state replicas on a different machine than the one that hosts the primary session state. You can further control where secondary states are placed using replication groups. A replication group is a preferred list of clustered servers to be used for storing session state replicas. Using the WebLogic Server Console, you can define unique machine names that will host individual server instances. These machine names can be associated with new WebLogic Server instances to identify where the servers reside in your system..
    Thanks
    Jay SenSharma
    http://middlewaremagic.com/weblogic/?p=2649  (Middleware Magic Is Here)

  • 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
              >> >> >
              >> >
              >>
              >
              >
              

  • Are oracle account and pearson account related

    I've created a pearsonvue account to take my oracle test.
    Have I to sort of relate my two accounts (oracle and pearsonvue)?
    Does this account (oracle) have to do something with my certification issues?
    Is there any public list of the certified people in my area or something ?
    thanks in advance.

    raulooo wrote:
    I've created a pearsonvue account to take my oracle test.
    Have I to sort of relate my two accounts (oracle and pearsonvue)?It is not mandatory but it is highly advised to use certview to marry (link) your oracle SSO and Pearson VUE accounts.
    See http://certview.oracle.com and http://blogs.oracle.com/certification/2009/09/0136.html
    Does this account (oracle) have to do something with my certification issues?Not unless / until linked by Certview. If you do not link via certview Oracle will still retain your Pearson VUE exam key events on their Certification database under the Oracle Testing Id, however this will not be linked to your Oracle SSI account until you register for Certview.
    Is there any public list of the certified people in my area or something ?
    There is no public list. (Though profiles of a selection of Oracle Certified Masters is available).
    thanks in advance.

  • Sessions, Devices, and Channels

    In previous versions of the driver, if I defined more than one IP address in the "device names" field of an "open session" vi...then each USRP "device" was actually referred to as a "channel" according to the Property Nodes, or documentation of say a "Configure" vi..
    In v1.3 of the driver, with the arrival of the new radios that are actually multi-channel within a single device, it is now less clear as to what the meaning of a "channel" is in the software.  There's now a section in the Help document called, "Scoping Rules" that refers to Devices as dev0, dev1, etc., and Channels within that device as "0, 1, etc.".  However...in most of the other documentation on the VI's and Property Nodes...the definitions seem more in line with previous versions of the driver.
    Can someone help sort this out?  What exactly does the "Active Channel" property in the Property Node define/refer to?  And the "Enabled Channels" property?  Do these things have different meanings/behaviors depending on your hardware?
    Brandon

    Good questions, and I'm glad we have a forum to clear them up.
    There are Session, Device, and Channel attributes.  Session attributes apply to the whole session, and configure things that are not device or channel specific (e.g. Current Driver Version, Start Trigger configuration, etc.).  Device attributes configure properties that may vary across devices in the session, but apply to the whole device regardless of the number of channels (e.g. Model, Reference Frequency Source, etc.).  Channel attributes can vary from channel-to-channel, whether on the same device or on different devices (Gain, Carrier Frequency, etc.).
    The "Active Channel" property in the property node allows you to specify the scope for all of the properties below the "Active Channel".  It is something of a misnomer because it can be used to scope an attribute to a device or session, not just channel.  This is simply an old naming convention that is used in IVI drivers in LabVIEW.  "Enabled Channels" actually specifies which channels in a multi-channel session you want to turn on for receiving/transmitting data.
    Here are some useful things to know:
    0) On the VIs that have the "channel list" terminal, that string means the same thing as "Active Channel" in the property node and can take the same values.
    1) Channels are uniquely numbered in monotonically increasing order in a session.  For example,
       Single device, single channel (device names="192.168.10.2"): There is a single channel "0"
       Single device, multi-channel (device names="192.168.10.2"): There may be two channels, "0" and "1"
       Multi-device, single channel per device (device names="192.168.10.2;192.168.10.3"): The channel on the first device in the list is "0" and the channel on the second device is "1"
       Multi-device, multi-channel per device (device names="192.168.10.2;192.168.10.3"): The channels on the first device in the list are "0" and "1" and the channels on the second device are "2" and "3"
    2) The "Active Channel" or "channel list" string allows you to scope attributes as specifically as you want to.  For example, say you want to specify the gain differently on each channel
       Multi-device, multi-channel per device session (device names="192.168.10.2;192.168.10.3")
            set Active Channel to "dev0/0"
            set Gain to 10  (sets gain on the first channel of device 192.168.10.2)
            set Active Channel to "dev1/3" 
            set Gain to 20 (sets gain on the second channel of device 192.168.10.3)
    2b)  The driver is nice... since the channel numbers are unique, you can say either "dev0/0" or "0" and the driver will set the attribute on the appropriate channel
    3) You can set multiple attributes at once by specifying a wider scope.
    Let's say you have a multi-device, multi-channel per device session. So the channels are "dev0/0", "dev0/1", "dev1/2", "dev1/3".  If you set the Gain property with the scope
       "dev0/0"  : it only sets the Gain on that specific channel
       "dev0" : it sets the Gain on both channels of dev0 ("0" and "1")
       "" : it sets the Gain on all channels on all devices in the session ("0","1","2", and "3")
    If you set the Reference Frequency Source property with the scope
       "dev0" : it only sets the Reference on the first device
       ""  : it sets the Reference on all devices in the session
       "dev0/0" : doesn't make sense because Reference Frequency Source is a device, not a channel, attribute
    4) Similar rules apply to reading attribute values back, but you can get into trouble.  If you read an attribute with a wide scope (e.g. read Gain with a "" Active Channel) it will return a valid value ONLY if all of the channels in the session have the same value for that property.  Otherwise, you get an error.
    5) Enabled Channels is a Session attribute, so the "Active Channel" property should be "" or just not set at all when you set that property.
       Let's say you have a multi-device, multi-channel per device session with channels "0", "1", "2", and "3".
       To enable only channels "0" and "2", set
          Active Channel = ""  (applies to entire session)
          Enabled Channels = "0,2"
    Patrick

  • How are contract and service order related....urgent

    Hi all
    I am ABAP consultant...
    I am working on Service contract Cost Management threshold alert report...
    I want clear idea as to how are contract and service order related....
    BAsed on contract type and contract start and ,end date,sold to party....
    i need to get contract ,item , service order no: , and i have to calculate <b>INTERNAL ,EXTERNAL LABOUR, INTERNAL,EXTERNAL material COST</b>
    plz help me out...
    Thanks in advance,
    Madhavi.

    Dear Madhavi,
    http://www.erpgenie.com/abap/tables_sd.htm
    VBFA Sales Document Flow
    KONV Conditions for Transaction Data
    KONP Conditions for Items
    LIKP Delivery Header Data
    LIPS Delivery: Item data
    VBAK Sales Document: Header Data
    VBAP Sales Document: Item Data
    VBBE Sales Requirements: Individual Records
    VBEH Schedule line history
    VBEP Sales Document: Schedule Line Data
    VBLB Sales document: Release order data
    VBLK SD Document: Delivery Note Header
    VBPA Sales Document: Partner
    VBRK Billing: Header Data
    VBRP Billing: Item Data
    VBUK Sales Document: Header Status and Administrative Data
    VBUP Sales Document: Item Status
    VEKP Handling Unit - Header Table
    VEPO Packing: Handling Unit Item (Contents)
    VEPVG Delivery Due Index
    Also, go through:
    http://www.erpgenie.com/abap/tables.htm
    Regards,
    Naveen.

  • Mapviewer javabean, sessions, state and related

    Hi,
    i am a scratching my head a little bit regarding the way I use MapViewer.
    We are building a web-app using a mapviewer for rendering the map, doing queries etc. We are using AJAX for user-interaction, including the map window, identifying objects, searches etc.
    I have currently implemented a singleton class which holds one instance of MapViewer. This instance recieves parameters from the session, and then executes run();
    However, since the MapViewer bean is stateful, and I want to make use of identify() etc, I realize that this is probably a wrong way of doing it ?
    Would it me more appropriate to alloc a new MapViewer instance for each session ? And would this be a very memory-consuming way ?
    kind regards,
    Oyvind

    Thanks, Andrejus.
    I tried to do some memorytesting, with results:
    100 instances:
    com.powel.mapviewer.MapViewerFactory produced [Ljava.lang.Object; which took 1403184 bytes
    1000 instances:
    com.powel.mapviewer.MapViewerFactory produced [Ljava.lang.Object; which took 14086016 bytes
    10000 instances:
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    Seems like this is a memory-eating way of doing it, so I think I will try to create a pool of mapviewers instead.
    Oracle Maps is an interesting feature, but in our case I believe it will complicate things (we dont want tiles, and we use WMS background etc)
    Regards,
    Oyvind                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • What are the difference and relations between Automatic Tuning Optimizer...

    What are the difference and relations between Automatic Tuning Optimizer and Automatic SQL Tuning Advisor?
    In my opinion, they are same.

    SQL> SELECT * from v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
    PL/SQL Release 11.1.0.6.0 - Production
    CORE    11.1.0.6.0      Production
    TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
    NLSRTL Version 11.1.0.6.0 - Production

  • Session problem on clustered sun fire with SP6.1

    Hi All,
    I am having a problem with a webapplication on a clustered system.
    In the following I describe the current system setup.
    I will then describe the setup of the web application.
    Following this, I explain the trouble I'm having with sharing sessions in this environment.
    Finally, I pose the key question.
    SYSTEM SETUP:
    Our group has a clustered server setup. I believe the two machines are Sun Fire systems running Solaris 9. Let me know if you need more information concerning the HW.
    To manage the cluster, we use Sun Cluster software. Let me know if you need to know the version number. I do not have it handy. We just recently setup the system (in the past 6 months).
    Also, we have the newest Sun Web Server installed 6.1. We used the default installation. The only thing we changed was the dynamicreloadinterval variable from "-1" to "60".
    WEB APPLICATION:
    We have a fairly simple MVC web application setup, which works well on a single-server system. Essentially, the web application (1) asks for a certain input via a webform, (2) takes this input, and uses it to get information from a database, (3) puts this information into a httpsession attribute, (4) redirects the response to a JSP. The JSP gets the httpsession attribute (populated in step 3) and prints it out.
    So, HTML with form posts to Servlet, Servlet gets data from database and populates a session attribute, JSP gets that session attribute and prints it out.
    Between each transition from HTML, Servlet and JSP, the currently processing server may switch. I.e. the HTML may be served, for instance, by ClusterServer1, the Servlet may be handled, for instance, by ClusterServer2, and the JSP may be served at random by either.
    THE TROUBLE I'M HAVING
    Sometimes, my JSP is able to find the session attribute and print out whatever I put into the session during the Servlet step. However, sometimes, the JSP will print out "null" (the session attribute isn't available to the JSP).
    For the HTML and the JSP, I have the page print out what server it is being served from. Thus, I can tell that the HTML is served from, for instance, ClusterServer1 while JSP is served from, for instance, ClusterServer2. Sometimes, the same server serves both.
    KEY QUESTIONS:
    Why would this be happening?
    How can I have a session stick to the user and be shared across both servers?
    What other information would you need to provide an answer concerning this issue?
    I appreciate your efforts very much!
    Matthias Edrich
    dailysun

    Hi All,
    Hi Elving,
    I read through the documentation and have the following questions:
    (1) It seems that I can share sessions amongst both servers if I
    configure the web server to store sessions in a persistant manner such as in a file or in a database. Is this correct?
    (2) To enable this persistent storage of a session, I would need to change the Session Manager used. Is this correct?
    (3) If yes, I have the choice between the following managers. Please correct me if I have misunderstood the options.
    - PersistentManager: Instead of securing session information
    in memory, this manager saves session information within
    a file on the server in a directory, which I specify within
    sun-web.xml
    - IWSSessionManager: With this manager, I can store sessions
    in a defined database or file on the server.
    - MMapSessionManager: This manager also stores sessions in
    a file on the server
    (4) What is the difference between PersistentManager and
    MMapSessionManager if my web server is running in
    single-process mode?
    (5) If MMapSessionManager is a file-based manager, where do I
    specify to what directory the related file is stored to as I
    do in PersistentManager?
    (6) What are the advantages and disadvantages of
    Persistent/IWS/MMap managers?
    (7) In looking at SessionManagers, am I even barking up
    the right tree? It seems like these would help me share
    sessions across clustered servers.
    (8) Finally, I guess my plan of action would be the following:
    -> Identify what session manager to use
    -> Include a sun-web.xml file in /WEB-INF containing
    the manager-specific info
    -> Reload my web application
    -> done...
    Is this correct?
    Elving, I appreciate your help. Thanks!
    dailysun

  • Fatal bug with shared JDBC Session Persistence

    We are attempting to launch a three-tier site with two clusters, one at the
              web layer (JSP/servlet/images) and a separate cluster at the app server
              layer (EJBs). We are running WebLogic server 4.5.1 Service Pack 8 on Solaris
              2.7. In production we use Solaris JDK 1.2.1.04, and in development we use
              JavaSoft JDK 1.2.2. We are able to duplicate this problem with both JDKs. We
              are using the WebLogic kona/oracle driver for session persistence because
              the Oracle JDBC driver would not work for this purpose - we are using the
              Oracle OCI driver for our EJB persistence in a separate pool in the app
              server cluster.
              We attempted to configure our web cluster to work with in-memory session
              replication. We found the performance of the WebLogic proxy to be abysmal -
              causing a 5x to 10x performance degredation over shared JDBC persistence. We
              were running the proxy on WebLogic, which we were advised would be slow. Its
              performance is beyond slow, it is completely unusable and should NEVER be a
              recommended or even supported configuration. We do not wish to purchase
              separate licenses for iPlanet, refuse to run IIS in a production setting,
              and cannot use Apache until WebLogic 5.1, so we are stuck with shared JDBC
              persistence until we can upgrade to 5.1.
              Using JDBC session persistence with a shared persistent store amongst all
              the clustered web servers results in our users getting brand-new sessions
              populated with data from OTHER USERS' SESSIONS. This is very easy to
              replicate using the provided test JSP and java class. This behavior results
              in new users coming to the site and finding themselves logged in as other
              users.
              The test.jsp file simply accesses the session, prints out some information,
              and then adds a few values to the session. The JSP prints out the value of
              session.isNew(), the session's ID, and the number of values in the session
              space. If you hit this jsp with a new browser window, the session should be
              new, and the number of values should be zero.
              The test Java class hits a URL with this test.jsp file repeatedly, and
              checks to make sure that the session is empty. It keeps a counter of the
              number of hits which resulted in non-empty sessions and the total number of
              hits. Because this java class does not maintain cookie data of any kind and
              merely opens new HTTP connections, it should always receive a brand-new,
              non-empty session.
              When we set the JDBC session persistence property
              weblogic.httpd.session.persistentStoreShared=true and run the test, we see
              periodically see the test.jsp file receiving a brand-new (session.isNew() =
              true), yet non-empty (session.getValueNames().length != 0) session. This is
              extremely bad behavior and makes the shared JDBC session persistence setting
              worthless. We were able to duplicate this behavior with both a single server
              and multiple servers in a cluster.
              If we set weblogic.httpd.session.persistentStoreShared=false, then this test
              works fine. This also means that we cannot cluster web servers.
              To run the test, simply start a WebLogic instance using the provided
              properties file, put the jsp in the document-root somewhere, and then run
              SessionTest.java, providing the URL of the test JSP as the only command-line
              argument. You will need to modify the properties file to have the proper
              database settings and document-root. The java class will display a running
              tally of the number of hits, and the number of hits that result in
              non-empty, illegal sessions, with a total at the end.
              So, we are now in a position where we are completely unable to launch our
              site in a clustered, no-single-point-of-failure configuration. Obviously,
              clustering was one of the main reasons to choose WebLogic, and we are
              extremely distressed that we are unable to get this configuration to work.
              Any help would be appreciated.
              [web.standalone.properties]
              [SessionTest.java]
              [test.jsp]
              

    I hope this is not too far fetched, but we are expieriencing a similar
              problem with jms (messages are mixed up between queues). This happens only
              if we are using message persistence in an oracle db (everything works ok
              when we are not using persistent messages). Could it be that there is a
              serious bug in the jdbc code/oracle driver code or connection handling
              (regarding multi threading)? This would explain that, whenever you use
              persistence with oracle databases, messages/sessions (or other) are mixed
              up.
              - Falk
              "Grant Kushida" <[email protected]> wrote in message
              news:[email protected]...
              > We are attempting to launch a three-tier site with two clusters, one at
              the
              > web layer (JSP/servlet/images) and a separate cluster at the app server
              > layer (EJBs). We are running WebLogic server 4.5.1 Service Pack 8 on
              Solaris
              > 2.7. In production we use Solaris JDK 1.2.1.04, and in development we use
              > JavaSoft JDK 1.2.2. We are able to duplicate this problem with both JDKs.
              We
              > are using the WebLogic kona/oracle driver for session persistence because
              > the Oracle JDBC driver would not work for this purpose - we are using the
              > Oracle OCI driver for our EJB persistence in a separate pool in the app
              > server cluster.
              >
              > We attempted to configure our web cluster to work with in-memory session
              > replication. We found the performance of the WebLogic proxy to be
              abysmal -
              > causing a 5x to 10x performance degredation over shared JDBC persistence.
              We
              > were running the proxy on WebLogic, which we were advised would be slow.
              Its
              > performance is beyond slow, it is completely unusable and should NEVER be
              a
              > recommended or even supported configuration. We do not wish to purchase
              > separate licenses for iPlanet, refuse to run IIS in a production setting,
              > and cannot use Apache until WebLogic 5.1, so we are stuck with shared JDBC
              > persistence until we can upgrade to 5.1.
              >
              > Using JDBC session persistence with a shared persistent store amongst all
              > the clustered web servers results in our users getting brand-new sessions
              > populated with data from OTHER USERS' SESSIONS. This is very easy to
              > replicate using the provided test JSP and java class. This behavior
              results
              > in new users coming to the site and finding themselves logged in as other
              > users.
              >
              > The test.jsp file simply accesses the session, prints out some
              information,
              > and then adds a few values to the session. The JSP prints out the value of
              > session.isNew(), the session's ID, and the number of values in the session
              > space. If you hit this jsp with a new browser window, the session should
              be
              > new, and the number of values should be zero.
              >
              > The test Java class hits a URL with this test.jsp file repeatedly, and
              > checks to make sure that the session is empty. It keeps a counter of the
              > number of hits which resulted in non-empty sessions and the total number
              of
              > hits. Because this java class does not maintain cookie data of any kind
              and
              > merely opens new HTTP connections, it should always receive a brand-new,
              > non-empty session.
              >
              > When we set the JDBC session persistence property
              > weblogic.httpd.session.persistentStoreShared=true and run the test, we see
              > periodically see the test.jsp file receiving a brand-new (session.isNew()
              =
              > true), yet non-empty (session.getValueNames().length != 0) session. This
              is
              > extremely bad behavior and makes the shared JDBC session persistence
              setting
              > worthless. We were able to duplicate this behavior with both a single
              server
              > and multiple servers in a cluster.
              >
              > If we set weblogic.httpd.session.persistentStoreShared=false, then this
              test
              > works fine. This also means that we cannot cluster web servers.
              >
              > To run the test, simply start a WebLogic instance using the provided
              > properties file, put the jsp in the document-root somewhere, and then run
              > SessionTest.java, providing the URL of the test JSP as the only
              command-line
              > argument. You will need to modify the properties file to have the proper
              > database settings and document-root. The java class will display a running
              > tally of the number of hits, and the number of hits that result in
              > non-empty, illegal sessions, with a total at the end.
              >
              > So, we are now in a position where we are completely unable to launch our
              > site in a clustered, no-single-point-of-failure configuration. Obviously,
              > clustering was one of the main reasons to choose WebLogic, and we are
              > extremely distressed that we are unable to get this configuration to work.
              > Any help would be appreciated.
              >
              >
              >
              >
              

  • Session state and browser cache - Back button problem

    Hi all,
    I have a problem (and unless I'm missing something I think we all do) with session state and use of the browser's Back button. I really hope I'm just being dumb...
    Background scenario:
    Page P has a sidebar list allowing the user to select what content is displayed (e.g. 'stuff relating to X, Y or Z' where X, Y and Z are rows in, say, a table of projects). When a list entry is clicked, we branch to page P with the value of the list item placed in an application-level item (call it G_PROJECT). Reports on page P use G_PROJECT in their WHERE clauses.
    So, click list entry X and G_PROJECT is set to X and page P shows reports for project X.
    Page P also has a set of buttons which branch to various edit pages which allow attributes of page P's current project to be updated. These pages similarly use G_PROJECT in their WHERE clauses.
    Problem scenario:
    1. The user goes to page P and picks project X off the list. Project X's stuff is displayed (G_PROJECT = X).
    2. The user then picks project Y off the list. Project Y's stuff is displayed (G_PROJECT = Y).
    3. The user then clicks the browser's Back button. The page is served from browser cache, so project X's stuff is displayed, but G_PROJECT still = Y.
    4. The user clicks an 'Edit' button; we submit, and branch to an edit page which displays (and will edit) data for project Y because G_PROJECT still = Y.
    This is SERIOUSLY BAD NEWS - apart from being confusing, the user's edit permissions on projects X and Y may differ, and so the user may be able to perform 'illegal' updates.
    I've read what I can on this forum and the rest of the web looking for ways to a) inhibit browsers' 'Back' functions and/or b) prevent pages being cached by the browser, but none of them have worked for me.
    Short of waiting for browser manufacturers to recognise that the web is now full of applications as well as static pages, and enable robust programmatic control of cache behaviour, does anybody know how the problem can be avoided - or at least detected?
    Thanks,
    jd
    Failed attempts to date:
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="cache-control" content="no-store">
    <meta http-equiv="cache-control" content="private">
    <meta http-equiv="cache-control" content="max-age=0, must-revalidate">
    <meta http-equiv="expires" content="Wed, 09 Aug 2000 01:01:01 GMT">
    <meta http-equiv="pragma" content="no-cache">
    Disallowing duplicate submission (page attribute).
    window.history.go(1);

    Thanks Scott,
    I may be being dumb here but I don't see how that would help...
    P250_PROJECT and G_PROJECT are currently kept in sync by app logic. Whichever is used to drive, if the page is rendered from cache then the app logic is not executed, so the rendered page contents are not those keyed by P250_PROJECT, as illustrated in steps 1-4 of the problem above.
    The user sees X, the session items say Y. The engine doesn't know what the user is seeing.
    when page P is POSTed, its hidden item P250_PROJECT should always be used to derive the application item G_PROJECT. Then whether the page was pulled from cache or rendered anew via a click from the sidebar link, the project ID is determined by the contents of that page.
    As I said above I tried this, with the 'Edit' branch set to:
    Set these items: G_PROJECT
    With these values: &P250_PROJECT.
    but it makes no difference. The project ID is not determined by the rendered page contents - the engine gets the value of P250_PROJECT from session state.
    I can code the 'Edit' pages such that they check permissions and if necessary redirect back to p250 (conditional before-header branch), but that's a clunky cure rather than the prevention I was hoping for.
    Please tell me if my understanding is incorrect.
    jd

  • No Auto-Update for To Do list, session message and toast message

    After LC ES Server hardening, we noticed that auto-update is not working for To Do list, session message and new task notification toast message. Before server hardening, all of them are still working fine.
    Does anyone know why auto-update is not working after server hardening? Is there any specific port numbers which need to be enabled/opened to solve this issue?
    FYI, we also noticed that some RemoteEventClient error messages occur many times in jboss server.log file as the following:
    --- LOG QUOTE START ---
    2008-01-10 15:26:16,086 INFO [STDOUT]
    GMS: address is neptune:[MULTIPLE VARIOUS PORT NO]
    2008-01-10 15:26:19,398 INFO [com.adobe.livecycle.remoteevents.client.RemoteEventClient] Client JGroup initialization failed to connect to service JGroup. Service JGroup initialization may not be complete, retrying...
    2008-01-10 15:26:20,414 INFO [com.adobe.livecycle.remoteevents.client.RemoteEventClient] com.adobe.livecycle.remoteevents.client.RemoteEventClient$RemoteEventReceiver using JGroups config UDP(bind_addr=10.77.250.248;mcast_addr=238.42.102.134;mcast_port=42707;ip_ttl=8):PING(tim eout=3000;num_initial_members=6):FD(timeout=3000):VERIFY_SUSPECT(timeout=1500):pbcast.NAKA CK(gc_lag=10;retransmit_timeout=600,1200,2400,4800):UNICAST(timeout=600,1200,2400,4800):pb cast.STABLE(desired_avg_gossip=10000):FRAG:pbcast.GMS(join_timeout=5000;join_retry_timeout =2000;shun=true;print_local_addr=true):VIEW_ENFORCER
    2008-01-10 15:28:21,216 INFO [STDOUT]
    GMS: address is neptune:3874
    2008-01-10 15:28:24,528 ERROR [com.adobe.livecycle.remoteevents.client.RemoteEventClient] Client JGroup initialization failed to connect to service JGroup. Maximum retries exceeded.
    2008-01-10 15:28:24,528 INFO [STDOUT] Jan 10, 2008 3:28:24 PM com.adobe.workspace.events.RemoteEventClientLifeCycle$RemoteEventInitThread run
    SEVERE: null
    com.adobe.livecycle.remoteevents.client.RemoteEventConnectionFailedException
    at com.adobe.livecycle.remoteevents.client.RemoteEventClient$RemoteEventReceiver.<init>(Remo teEventClient.java:213)
    at com.adobe.livecycle.remoteevents.client.RemoteEventClient$RemoteEventReceiver.getReceiver (RemoteEventClient.java:159)
    at com.adobe.livecycle.remoteevents.client.RemoteEventClient.<init>(RemoteEventClient.java:3 61)
    at com.adobe.workspace.events.RemoteEventClientLifeCycle$RemoteEventInitThread.run(RemoteEve ntClientLifeCycle.java:65)
    at java.lang.Thread.run(Thread.java:595)
    --- LOG QUOTE END ---

    JGroups is an open source project that allows processes to send messages to one another. LiveCycle data services uses it for its messaging implementation (basically it configures the server to multicast messages to all the listening clients...even in a clustered environment across different LAN/WAN).
    In most cases the default configuration will work fine, the problem is that if you are running a firewall on the server (or your local machine...i.e. windows firewall) the ports that JGroups uses for its communications can be blocked. In a local environment its easy enough to disable windows firewall and bounce your server to get things working.
    In a production environment you need to open the ports that JGroups is using. These settings are in the Global Administration settings (as mentioned by WorkspaceUser above). If you export it and look at the JChannelConnectionProperties you'll see the ports its using and you can set your firewall to allow communication to those ports.
    Bryan

  • Session Facade and Business Delegate Pattern

    Hi!
    The only way to use the Session Facade Pattern, is if I use EJB for Persistence.
    Is valid to do this?:
    I use Ejb for simple update, insert querys. From my business delegate I call the Session Facade Layer, and from this I invoque Entyties for persistence.
    But if I have complex querys, is correct to make PL SQL Procedures and do the following:
    From my business delegate I call to the Dao layer, and from this via JDBC I call the Procedure.
    Please explain me the best form to do this, having complex querys for reporting and simple querys for inserts/update.
    Is valid to combine the use of CMP (for simple persistence cases), BMP (for complex persistence cases), and JDBC for complex select querys with multiple result rows.
    Thanks!!

    The session facade is borrowed from the facade pattern, so you could have a facade to almost anything.
    A session facade is usually against other beans...for example if you
    (Not deployed as CMR)
    1. Address bean
    2. Phone Bean
    3. Customer bean
    as entity beans then you can build a session facade such as
    CustomerFacadeBean which will CreateReadUpdateDelete(CRUD) address and phone as well when a customer is CRUD ed.
    In your case you said you have very complex sql's so one way would be
    Business Delegate -> Session Facade -> (Bean Managed) Entity Bean -> DataAccessObject.
    If you think this is a overkill then, write a custom pattern such as DataDelegate
    DataDelegate -> (Bean Managed) Entity Bean -> DataAccessObject.
    In the above scenario you should be quite sure that the system will not evolve into a case mentioned above such as when customer is deleted a phone and address object are also thrown away.
    You said this scenario
    Business Delegate -> DAO..
    I don't think this is a good idea because, a business delegate is a proxy against business objects....and usualy in J2EE business objects are session beans. Entity and DAO objects are data objects not business ones.
    Besides if you do the above scenario you will end up wiring all the transactions, etc etc in your DAO which is not a good idea.
    Although you could use BusinesDelegates against entity beans it will lead to a misnomer.

  • Problems disabling restart session persistence in Tomcat

    I'm running Tomcat 5.5.17. I've been working on an application for quite some time when the tomcat logs suddenly started to fill up with the following errors each time I restart Tomcat:
    2006-09-29 21:15:10,539 | WARN | StandardSession.java | writeObject() | 1468 | Cannot serialize session attribute publicPictures for session 9184A48FEFC99FAA3573A4DE1F75CCD5
    I've searched the web, and found out that the reason for this is that Tomcats "Restart Session Persistence" is turned on. So how do I turn that off?
    According to a few sites in the web there should be a file called application.xml, in which I can put the line <Manager pathname=""/> to disable the Session Persistence manager. The problem is that on my Tomcat installation there's no such file.
    So I tried to create the file $CATALINA_HOME/conf/application.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN'
              'http://java.sun.com/dtd/application_1_3.dtd'>
    <application>
    <Manager pathname=""/>
    </application>But this had no effect at all. So can someone please explain to me how I can disable the Session Persistence manager?

    I had a similar problem in that during restarts sometimes I would get messages about null pointer exceptions which seemed to be related to attempted session persistence. I never paid a lot of attention but eventually decided to do something about it, i.e disable session persistence, since the errors seemed to slowdown restarts.
    Based on this:
    http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html
    I added a Manager element to my main Context element, using the standard manager class and setting the pathname attribute to an empty string:
    <Context path="/" debug="1" reloadable="true" crossContext="true">
         <Manager class="org.apache.catalina.session.StandardManager" pathname="" />
    </Context>
    Since the errors I was getting were sporadic anyway I cannot definitively say this fixed it but I have not seen any errors since making the change and shutdowns seem to go faster now.

  • Session Vars and Local Firewalls

    I've been getting more complaints lately that session vars
    are getting lost and normally I walk them through making sure
    cookies are enabled, but now that doesn't seem to be always the
    case anymore and have finally isolated it to when they install a
    firewall. If they disable it works, but when on it doesn't. Is
    there anything I can do besides telling them not to use their
    firewall?
    Server specs:
    ColdFusion MX 6.1 on a non-clustered environment.
    User:
    Using IE and using "e-trust EZ Armor"

    I assume then, you are storing variables in cookies, rather
    than registry or database then, correct?
    Are these local firewalls? (on the actual PC) or H/W on a
    network?
    If they are local, the firewall itself may be eliminating the
    cookie storage, not the browser ... if it is, it likely has a way
    to change the settings.
    There's not much you can do if you are forced to use cookies
    for sessions (which is very common) other than altering your coding
    or having the user change their settings.
    If you have access to the CF admin, you may try setting up a
    DB service for variable storage, which is an option.

Maybe you are looking for

  • How to display contact person full screen photo in making a call or receive call

    How to display contact person full screen photo in making a call or receive call

  • Billing document not getting saved

    Hi Gurus,         I am facing a problem with th billing doument. When I try to save the Billing through VF01, it is going to the screen and showing the line items in it. And when we save, it is generating a billing document number.But it is not getti

  • How can i insert a link in a post

    Is there an insert link button for safari? I want to be able to change text into clickable links when commenting on message boards and what not, but I don't know how to do it.

  • LDAP authentication not minding user set

    I have a publishing rule for an internal website setup with LDAP authentication setup for two different domains, the domain the TMG 2010 is joined to (domain1) and another external domain (domain2).  I want users from either domain to be able to auth

  • Macbook Pro charger burned- help? (Pics)

    My Macbook Pro charger has been acting weird the past few days: not charging, getting really hot, etc. I went to charge my computer today only to find that the coating over the wires was burned and melted! I charged my computer last night while watch