Is it occur to be like one standalone application on each
node/instance of a cluster? Like if I have a @Singleton instance will
it be the one on the whole cluster or one for each node and so one for
each running app.
Assuming that the cluster has been set up with two nodes/hosts (i.e., two JVMs), there will two copies (i.e., one copy in each JVM host) of the @Singleton
objects.
In general, singleton = single object (instance) per webapplication per JVM
In other words, when you are deploying multiple web applications inside the same server (JVM), you can have multiple objects/instances (one per each web application) of the same class within the same JVM.
Or it will be treated like the one application just spread on a
cluster under the hood?
In general, the cluster will be set up in two or more separate hosts (in order to achieve the resilience, load balancing, etc.. reasons), i.e., the application will be deployed into separate JVMs, so there will be separate copies of the @Singleton
objects in each JVM.
If I have nodes n1 n2 n3. And on the node n3, I''ll create some bean
with singleton injected like @Inject private SingleBean singleBean;
Will it be the singleton from node n3 only or there is some way that
the singleton from n1 may be injected?
It will be singleton for Node3 (JVM) only.
If you really want to share (because of any reason) the singleton instance across JVMs, you can refer here for more details.