Clustering 5 wls

Hello,
          I set up a cluster of 5 wls (451) with the default values, on
          a LAN, on 5 computers, same config.
          They joined the cluster together without any problem.
          But, when calling mulitple methods on a Stateless session bean,
          the time between calls were really slow: 4 to 10 seconds.
          I tested with 2 Wls only in a cluster. It does work, really fast.
          1. What did I miss?
          2. How to configure wls so that it does not renew contacts to
          other wls too often?
          Thierry
          

The short answer to #1 is to set the following tuneables on the client
          side:
          java -Dweblogic.system.executeThreadCount=10
          -Dweblogic.system.percentSocketReaders=50 <your client program>
          The default settings are 5 and 33. Thus the number of socket reading
          threads on the client was restricted to a maximum of 2 (33% of 5). As
          you discovered, this can cause problems when there are > 3 servers in
          the cluster.
          This has been documented in the tuning guide which is part of the WL5.1
          docs.
          Srikant, [email protected], http://www.weblogic.com/, etc.
          Thierry Janaudy wrote:
          > Hello,
          >
          > I set up a cluster of 5 wls (451) with the default values, on
          > a LAN, on 5 computers, same config.
          >
          > They joined the cluster together without any problem.
          >
          > But, when calling mulitple methods on a Stateless session bean,
          > the time between calls were really slow: 4 to 10 seconds.
          >
          > I tested with 2 Wls only in a cluster. It does work, really fast.
          >
          > 1. What did I miss?
          >
          > 2. How to configure wls so that it does not renew contacts to
          > other wls too often?
          >
          > Thierry
          

Similar Messages

  • SOAP (EJBs) clustering (WLS 7.0)

    Hi all,
    I had posted this before, too. But I did not get any working feedback. Has anyone
    ever tried clustering SOAP impls (EJB) in WLS? Does WLS support this?
    I am able to deploy simple EJBs across clustered WLS instances.
    I am unsuccessful in doing the same for a web service (SOAP) using EJBs. The application
    gets deployed but successive requests do not round robin among available services.
    I think somehow I need to do some cluster tweaks to the receiving WLS servlet
    that peeks into the SOAP message and forwards it to the right service.
    Could someone please help me out?
    I would be most grateful.
    Thanks a lot. Guha

    A traditional EJB stub (which communicates over T3 or IIOP) has
    intelligence built in to it to perform round robin load balancing. The
    same tricks don't apply for SOAP/HTTP. If you want to get that
    behavior, then you need to do the same thing used for load balancing
    servlet requests: all members of the cluster should resolve to the same
    DNS name, and use DNS round robining to distribute the load. Or use a
    load balancer like Resonate. For more information, see:
    http://e-docs.bea.com/wls/docs70/cluster/index.html.
    -Don
    Suteertha wrote:
    Hi all,
    I had posted this before, too. But I did not get any working feedback. Has anyone
    ever tried clustering SOAP impls (EJB) in WLS? Does WLS support this?
    I am able to deploy simple EJBs across clustered WLS instances.
    I am unsuccessful in doing the same for a web service (SOAP) using EJBs. The application
    gets deployed but successive requests do not round robin among available services.
    I think somehow I need to do some cluster tweaks to the receiving WLS servlet
    that peeks into the SOAP message and forwards it to the right service.
    Could someone please help me out?
    I would be most grateful.
    Thanks a lot. Guha

  • Looking up JMS destinations with clustered WLS

              From scanning the postings, it appears that in a clustered WLS environment, the
              JMS servers are not clustered. As a result, the JMS destinations must be unique
              across all of the WLS in the cluster. In addition, there is no failover available
              when a JMS server goes down.
              With that stated, what I want to know is:
              When establishing a JMS connection with a JMS server in a WLS cluster, do I need
              to know the JNDI URL for each specific JMS server that is managing the destination(s)
              I wish to pub/sub?
              Or, is there a 'global' JNDI tree that I can reference and the clustered WLS behind
              the scenes will route me to the appropriate JMS server?
              If resolving the URL is a manual process, I will need to keep track of which destinations
              reside on which JMS servers. This adds an additional maintenance point that I
              would like to avoid if possible.
              Thanks,
              Bob.
              

    One can use Connection Factory to establish connection to particular
              destination (queue/topic). connection factories are clustered. so, one don't
              need to have knowledge of particular WLS.
              "Neal Yin" <[email protected]> wrote in message
              news:[email protected]...
              > Although there is only one JMS server instance, you can lookup it from
              > anywhere in a cluster.
              > In another words, JNDI tree is global in a WLS cluster. Just give cluster
              > DNS name in your
              > URL, you will be fine.
              >
              > -Neal
              >
              >
              > "Bob Peroutka" <[email protected]> wrote in message
              > news:[email protected]...
              > >
              > > From scanning the postings, it appears that in a clustered WLS
              > environment, the
              > > JMS servers are not clustered. As a result, the JMS destinations must
              be
              > unique
              > > across all of the WLS in the cluster. In addition, there is no failover
              > available
              > > when a JMS server goes down.
              > >
              > > With that stated, what I want to know is:
              > >
              > > When establishing a JMS connection with a JMS server in a WLS cluster,
              do
              > I need
              > > to know the JNDI URL for each specific JMS server that is managing the
              > destination(s)
              > > I wish to pub/sub?
              > >
              > > Or, is there a 'global' JNDI tree that I can reference and the clustered
              > WLS behind
              > > the scenes will route me to the appropriate JMS server?
              > >
              > > If resolving the URL is a manual process, I will need to keep track of
              > which destinations
              > > reside on which JMS servers. This adds an additional maintenance point
              > that I
              > > would like to avoid if possible.
              > >
              > > Thanks,
              > >
              > > Bob.
              > >
              > >
              > >
              >
              >
              

  • Clustering WLS 6.1

              Hi All,
              I'm trying to clustering WLS 6.1. I have 2 Web servers, 2 Application servers,
              and 1 Admin servers. One of the web server is in the same machine with the admin
              server. And the other servers are in separate machine.
              I want to make 2 clusters, one is the cluster for the web server, and the other
              is for the app server.
              I already set the clustering in the admin server. What I would like to know, do
              I need to set the clustering configuration in each server??
              Thanx in advanced.
              Regards,
              Mellfiena.S
              

    Mellfiena.S wrote:
              > Hi All,
              >
              > I'm trying to clustering WLS 6.1. I have 2 Web servers, 2 Application servers,
              > and 1 Admin servers. One of the web server is in the same machine with the admin
              > server. And the other servers are in separate machine.
              > I want to make 2 clusters, one is the cluster for the web server, and the other
              > is for the app server.
              > I already set the clustering in the admin server. What I would like to know, do
              > I need to set the clustering configuration in each server??
              >
              > Thanx in advanced.
              >
              > Regards,
              >
              > Mellfiena.S
              I am not sure what you mean by I already set the clustering in the admin
              server.
              1. You have to create two clusters.
              2. Then you make each web server part of cluster 1 and each application
              server part of cluster 2.
              Hope this makes sense.
              Cheers,
              -- Prasad
              

  • Error in accessing Processes in a Clustered WLS Environment

    Hi all,
    We are running a clustered deployment of OBPM in WLS. The cluster is behaving properly execpt published and deployed projects are displaying the following error when accessing the workspace:
    The Process '/FooRequestProcess#Default-1.0' is not available.
    The Process '/FooCenterRequestProcess#Default-1.0' is not available. Caused by: Process '/FooRequestProcess#Default-1.0' not available. Caused by: Cannot reach engine 'bpmQAengine' at URL: ''. Caused by: While trying to lookup 'engines.bpmQAengine' didn't find subcontext 'engines'. Resolved ''
    Now, there was an issue with the JDBC Data Source in WLS which has since been fixed otherwise neither the engine or workspace would have come up. I have rebuilt and redeployed the engine, and I have undeployed and unplished the project then republished and redeployed it yet I still see this error.
    The XA definitions are correct. Does anyone have a clue as to the cause of this?
    TIA,
    IGS

    Hi,
    Am getting the same error
    The Process '/ExpenseReport#Default-1.0' is not available.
    The Process '/ExpenseReport#Default-1.0' is not available. Caused by: Process '/ExpenseReport#Default-1.0' not available. Caused by: Cannot reach engine 'Engine3' at URL: ''. Caused by: While trying to lookup 'engines.Engine3' didn't find subcontext 'engines'. Resolved ''
    When i tried checking --reload from directory am getting the following error
    Error Caused by: JMX connection for J2EE_WEBLOGIC could not be established. URL: service:jmx:t3://cdi-server1.apac.apl.com:8101/jndi/weblogic.management.mbeanservers.runtime. Caused by: User: weblogic, failed to be authenticated.
    Am not sure of this error... Please advice how to recitfy.. I have given the host and port correctly (pointed to one of the managed server)
    The most interesting part is I have configured cluster in distributed environment. I have deployed the project to a cluster with two managed servers. one managed server is configured to another physical server..
    When i try the workspace with server1:9001\workspace am able to see the deployed processes without any errors/exceptions
    but when i try the workspace with server2:9002\workspace am getting process unavailable error..
    server1:9001 -- managed server1 of the cluster to which the process is deployed
    server2:9002 - managed server2 of the cluster to which the process is deployed
    Kindly help
    Thanks,
    Charan
    Edited by: charan27 on May 26, 2010 5:24 AM

  • SOAP / Web Service clustering WLS 7.0.2

              Hi there,
              I'm looking for information on if and how WLS 7.0.2 is capable of
              clustering Web Services. We created the Web Service like following:
              - Created a stateless session bean first
              - Created the web service with a servicegen ant task
              I browsed through edocs.bea.com but
              up to now with no success.
              Any help is greatly appreciated.
              Best regards,
              Fabio
              

              "Fabio Barone" <[email protected]> wrote:
              >
              >Hi there,
              >
              >I'm looking for information on if and how WLS 7.0.2 is capable of
              >clustering Web Services. We created the Web Service like following:
              >- Created a stateless session bean first
              >- Created the web service with a servicegen ant task
              >
              >We need the clustering service for high availability, not
              >for load balancing or session fail-over.
              >
              >Our IT dept. offered a hardware solution with CISCO load-balancers
              >first (our preferred solution for high availability).
              >However, the guys here are not able to configure the hardware properly,
              >that's why we're looking for alternatives with the WLS cluster.
              >
              >I browsed through edocs.bea.com but
              >up to now with no success.
              >
              >Any help is greatly appreciated.
              >
              >Best regards,
              >Fabio
              Fabio, your other alternative is through a group of Web servers configured identically
              using Weblogic proxy plugins. WLS can also act as a load-balancing proxy to interface
              with a Cluster. Search bea docs for Load-balancing Proxy.....
              Good Luck
              

  • JMS in Clustered WLS 5.1

              Has anyone used JMS in a 5.1 cluster ? I'm not able to lookup Topics from my client.
              Can someone help me with this ?
              

    Currently JMS Topics are not replicable objects in a cluster; you must bind it to a single Node.
              Once a Node has a bound Topic and joins a cluster, its local JNDI tree is broadcasted to the rest of
              the cluster, and you should be able to look up the local Topic from any Node. What problems are you
              having?
              Gene
              "Ashok Sridhar" <[email protected]> wrote in message news:3b2f6bb0$[email protected]..
              >
              > Has anyone used JMS in a 5.1 cluster ? I'm not able to lookup Topics from my client.
              > Can someone help me with this ?
              >
              >
              

  • WLS Clusters and TGIOP

    Hello,
              the Weblogic Tuxedo Connector Administration Guide (v10.0) states on page
              1-4 "Known Limitations":
              "Does not support inbound TGIOP in clustered environments."
              This seems to be a major limitation. Or am I missing something? Are there
              any more details about this limitation available?
              We want to integrate an existing Tuxedo Corba application with a clustered
              WLS application. The Corba application will invoke EJB services.
              Roger

    Roger Fischer <[email protected]> writes:
              The docs are correct. There is an issue with the way objects are
              addressed in a clustered environment that Tux does not yet understand.
              You might want to contact WLS PM for an update since supporting this
              has been considered for some time now.
              andy
              > Hello,
              >
              > the Weblogic Tuxedo Connector Administration Guide (v10.0) states on page
              > 1-4 "Known Limitations":
              >
              > "Does not support inbound TGIOP in clustered environments."
              >
              > This seems to be a major limitation. Or am I missing something? Are there
              > any more details about this limitation available?
              >
              > We want to integrate an existing Tuxedo Corba application with a clustered
              > WLS application. The Corba application will invoke EJB services.
              >
              > Roger

  • Customer would like to have details on Clustering resources usage

    IHAC that currently implemented an application using 6 WLS instances in 6 domains (!) and 2 phisical servers. I mean they have 6 admin with a single managed server each. They did so to implement an High Available system, working Cluster-like.
    When I told them that a better configuration should be 1 Admin and 6 managed servers using the standard Clustering WLS features they claimed that it will be resources consuming, more than the current configuration.
    Is there any document where we describe the best way to implement Clustering and a benchmerk where we show the differences in system usage when using cluster and not using it, and also the Pro/Cons of having a clustered architecture?
    I cannot find a the info in the standard WLS docs.
    They have a WLS 9.2.
    Thank you !
    Chiara
    (ACS Service Manager)

    The following doc tells more about why one should cluster.
    http://download-llnw.oracle.com/docs/cd/E13222_01/wls/docs92/cluster/overview.html#wp1011562
    Scalability
    High-Availability
    Application Failover
    Load Balancing
    If your customer doesn't need the benefits mentioned in the above doc then, there's no need for them to cluster their app.
    I agree with your customer that cluster adds resource overhead. Most customers in production environment choose high availability and load balancing against additional resource consumption at runtime.
    Following the performance tuning best practices and understanding customers application, one can decrease the overhead of clustering to some extent.

  • Is it possible to cluster WLS AdminServers...

    We have IDAM 11.1.1.5 installed with all its bits and pieces running on RHEL5.6 on 2 servers. The servers are clustered and we are using Grid Clusterware to create the RAC cluster for the database (11.2.0.1). We have the full WLS 10.3.5 installed on Server1 (AdminServer, wls_ods1, oim_server1, oam_server1, soa_server1, etc). On Server2, since docs seem to say that you can only have one AdminServer on a cluster... we have oim_server2, oam_server2, soa_server2, etc running there with the oim, oam , soa, etc clustered.
    The question is if the server that houses the AdminServer goes down... then there is no way for Server 2 to pick up the slack. So can we or has anyone actually clustered WLS? Is it possible to have an AdminServer on both servers in case Server1 goes down?

    OldGuy wrote:
    Thank you for the very quick response... I was surprised to hear back so quickly... I will also move/ask the question to the WLS forum... but just want to clarify your suggestion regarding setting the AdminServers up in failover mode. Have worked on my share on BEA WLS to know a bit about it and hence the reponse. :-)
    Even though the AdminServers are not clustered... would they still be part of the same domain but with only one running? Can the servers (oim1/2, oam1/2, etc) still be clustered?AdminServer failover is not cluster but just a way to have your AdminServer migrate automatically to another machine/node if it goes down on the primary. Check this: http://docs.oracle.com/cd/E15051_01/wls/docs103/cluster/migration.html . As for only one AdminServer running in the domain, your oim1/2, oam1/2 can still be clustered and running from various nodes. In a domain you can have only one instance of AdminServer running and have multiple managed servers running different applications in clustered homogenous/heteregenous manner.
    You can check this as well: http://hosteddocs.ittoolbox.com/soa_us_en_wp_autoser.pdf
    HTH,
    Bikash

  • Apache in front of WLS in a cluster

              hi all,
              I have some doubts about apache and wls in a cluster. We have 2 Apache server
              (installed on 2 different hosts) in front
              of a clustered WLS 6.1. Now my doubt is: who will take care of authentication,
              Apache or WLS?
              In other words as the 2 instances of Apache don't know about each other (they
              are chosen with DNS-round robin), will the
              authentication be done twice? or it's possible to handle authentication on the
              application
              server rather ? if so, where the Cookie that identifies the session will be kept?
              Tanks a lot
              Francesco
              

    It all depends on what you mean by authentication and how you configure each
              node.
              If you mean authentication re:SSL, then apache.
              If you have ACL's defined in Apache, then Apache will, but this is http
              basic auth, no cookies.
              If you have security defined in WLS or are using session's in WLS, then
              cookies will be set and passed from WLS all the way back to the client and
              then when a new request is made the cookie will be passed from the client to
              apache and back to wls.
              Cheers
              mbg
              "Francesco" <[email protected]> wrote in message
              news:[email protected]..
              >
              > hi all,
              > I have some doubts about apache and wls in a cluster. We have 2 Apache
              server
              >
              > (installed on 2 different hosts) in front
              > of a clustered WLS 6.1. Now my doubt is: who will take care of
              authentication,
              > Apache or WLS?
              > In other words as the 2 instances of Apache don't know about each other
              (they
              > are chosen with DNS-round robin), will the
              > authentication be done twice? or it's possible to handle authentication on
              the
              > application
              > server rather ? if so, where the Cookie that identifies the session will
              be kept?
              >
              > Tanks a lot
              > Francesco
              

  • Clustering under W2K Workstation

    Has anyone succeeded in doing this? I can not get the clustered WLS
              instances to talk to each other. Identical set up under NT4 Workstation
              sp5 works fine.
              Tad Frysinger
              

    It is not supported platform yet.
              - Prasad
              Tad Frysinger wrote:
              > Has anyone succeeded in doing this? I can not get the clustered WLS
              > instances to talk to each other. Identical set up under NT4 Workstation
              > sp5 works fine.
              >
              > Tad Frysinger
              

  • Accesing the clustered components ...load balancing!!!

              Friends ... here is my problem scenario. If any body has ideas, pl.share them.
              I have Webservices exposed on weblogic server. UI (in .NET ) accesses the webservices
              API on WLS.(bunch of EJBs are deployed on the WLS)
              Now I thought of converting the WLS to a clustered environment. So I created 2
              manged servers (on the same machine ..just to try initially). I have assigned
              unique port numbers to them.I tried mutlcast test .looks like the intra-cluster
              communication is okay.
              How can I do load balancing in this situation ? I could individually ping(look
              up) each of the manged server address. But how do i look up the cluster as a whole
              and not individual managed servers.(I mean load balancing ) I tried to access
              using the cluster address.It does not work .
              Do we need to have a plug-in /proxy to do the load balancing or is there any load
              balancing mechanism build in to WLS, so that I dont have to work with plug-ins
              and other stuff.
              precisely how do i access the individual components on different managed servers
              with a single address (which should then redistribute to individual managed servers
              in the cluster)
              Thanks for your help .
              

              Thanks Bijan. That was very useful information.
              I have one more question.
              While configuring the iis ,Which kind of forwarding should i use ? path forwarding/file
              forwarding ?(may not be relevant )
              (what should i give as end point in the web.config xml file? )
              When I had only one instance of WLS I used to give
              "http://localhost:7001/CCWebModule/services/XCWebServiceSoap"
              Right now I have two managed servers in cluster running on port 8001 and 9001.(while
              7001 is the admin server )
              I know i need to put this addresses in the iisproxy.ini as "WeblogicCluster".
              In this case what seem appropriate for "WLForward=" in the iisproxy.ini file
              Thanks
              Prasanth
              "Bijan Mohanty" <[email protected]> wrote:
              >
              >Prashanth,
              >
              >If you have deployed some webservices on WLS and later used clustering
              >of WLS,
              >you have essentialy multiple WSDLs. When you use a client to talk to
              >this webservice,
              >you have to loadbalance between the webservices on the managed server.
              >
              >When you use RMI to talk to a EJB deployed on clustered WLS, the replica
              >aware
              >stub has the clustering info. So the client's call to EJB is loadbalanced
              >by weblogic
              >automatically.
              >
              >In case of webservices, there is no such luck. You can use any of the
              >following
              >tricks.
              >1. Create webservice stubs in the client for each webservice in the managedserver
              >and laodbalance it in the client.
              >2. Use a proxy (Apache or IIS or Iplanet) that can loadbalance betwen
              >the webservices
              >and use that from the client.
              >3. Use a hardware loadbalancer for loadbalancing.
              >
              >4. Or use HttpClusterServlet. I had lots of problems using this in the
              >past and
              >don't recommend that.
              >
              >My suggestion will be to use the first option in the development and
              >use a combination
              >of 2 and 3 for production env. In the second option, although you get
              >the loadbalancing,
              >you have a single point of failure(i.e the proxy plugin). That's why,
              >the combination
              >of 2 and 3 works best.
              >
              >BTW the webservices are implemented as a webapp. When a call reaches
              >that servlet
              >the call stays in that app server instance, even if the EJBs are clustered.
              >That's
              >because weblogic optimizes the calls to reduce the marshalling/unmarshalling.
              >
              >Hope this helps.
              >
              >Bijan
              >
              >"prasanthbk" <[email protected]> wrote:
              >>
              >>Friends ... here is my problem scenario. If any body has ideas, pl.share
              >>them.
              >>
              >>I have Webservices exposed on weblogic server. UI (in .NET ) accesses
              >>the webservices
              >>API on WLS.(bunch of EJBs are deployed on the WLS)
              >>
              >>Now I thought of converting the WLS to a clustered environment. So I
              >>created 2
              >>manged servers (on the same machine ..just to try initially). I have
              >>assigned
              >>unique port numbers to them.I tried mutlcast test .looks like the intra-cluster
              >>communication is okay.
              >>
              >>How can I do load balancing in this situation ? I could individually
              >>ping(look
              >>up) each of the manged server address. But how do i look up the cluster
              >>as a whole
              >> and not individual managed servers.(I mean load balancing ) I tried
              >>to access
              >>using the cluster address.It does not work .
              >>
              >>Do we need to have a plug-in /proxy to do the load balancing or is there
              >>any load
              >>balancing mechanism build in to WLS, so that I dont have to work with
              >>plug-ins
              >>and other stuff.
              >>
              >>precisely how do i access the individual components on different managed
              >>servers
              >>with a single address (which should then redistribute to individual
              >managed
              >>servers
              >>in the cluster)
              >>
              >>
              >>Thanks for your help .
              >
              

  • Urgent help requested : How to cluster SOAP (via EJB) in WLS 7.0 SP 01?

    Hi all,
    I am able to deploy simple EJBs across clustered WLS instances.
    I am unsuccessful in doing the same for a web service (SOAP) using EJBs. The application
    gets deployed but successive requests do not round robin among available services.
    I think somehow I need to do some cluster tweaks to the receiving WLS servlet
    that peeks into the SOAP message and forwards it to the right service.
    Could someone please help me out?
    I would be most grateful.
    Thanks a lot.
    Guha

              A couple of entries in webservices.xml file and making the proxy from the web server
              reach out to the cluster instead of trying to make the https client do so.
              

  • Clustered JMS

    I'm trying to config JMS on a clustered WLS.
              Please, is there any link/doc saying how to do it?
              Any comment on this would be welcome.
              

    This should help:
              http://e-docs.beasys.com/wls/docs61/cluster/index.html
              Michael
              BEA Systems
              Learning WebLogic? Buy the book:
              http://www.learnweblogic.com/
              At Amazon:
              http://www.amazon.com/exec/obidos/ASIN/0130911119/learnweblogic/103-6817548-
              3834229
              "Nacho" <[email protected]> wrote in message
              news:3baf0cd4$[email protected]..
              > I'm trying to config JMS on a clustered WLS.
              > Please, is there any link/doc saying how to do it?
              > Any comment on this would be welcome.
              

  • Is Struts framework WLS cluster-safe?

    In a clustered WLS environment, there are programming requirements
              having to do with the use of the session object ("Session Programming
              Requirements" in http://edocs.bea.com/wls/docs61/cluster/servlet.html).
              The Jakarta Struts framework uses the session object extensively.
              Does anyone know whether Struts complies with the above requirements
              and is therefore WLS cluster-safe? Has anyone deployed a Struts-based
              application to a WLS cluster?
              

    Let's look at it without synchronization:
    Thread A calls execute() method (no class variables that are not constants)
    Thread B calls execute() method (no class variables that are not constants)
    Let's look at it with synchronization:
    Thread A calls execute() method (synchronization check succeeds)
    Thread B calls execute() method (synchronization check hangs until thread A is done and releases the lock)
    Let's say that the execute() method does something with decent latency (like accessing a network resource or a database). Now, you eventually end up with a 'queue' of threads waiting for the lock to be released. This is a scaling constraint. It introduces a bottleneck into your application.
    Now, this is sometimes unavoidable. For example, database connections are a scarce resource. The solution to this is a connection pool, which helps, but does not eliminate the bottleneck. Wherever possible, you want to avoid scaling bottlenecks.
    You have the ability to do so in your case. Try to avoid anything in your Action class itself (a class variable) that is anything other than a String or a primitive and ensure that any of those variables are constants (static and final). Now, these variables are 'thread-safe' because they are constant and immutable.
    For your execute() method, only use variables that are in the method signature itself or created/declared within the execute() method. This will ensure your Action class is in fact thread-safe. The minute you declare a mutable class variable (or a class like List that allows you to manipulate its contents), you introduce the possibility of a race condition and thread-unsafety (if that's a real term).
    - Saish

Maybe you are looking for