I need to cache some data for performance optimization. For this I have bound my data object in the InitialContext. Once bound it is not fetched again from anywhere and is used from the context itself. There is also a method to invalidate this caching which simply gets the data again and re binds it in the context. This works properly in case of a Standalone machine but when Clustering is done, the data is set for the each cluster node. This is also fine as there would not be any change in the performance but when it comes to invalidate the data, it is not possible to invalidate from all the nodes at a single go.
I read somewhere that the solution is to bind the object in the clusters shared context which runs on a different port. This would work in case of cluster but would cause a problem in case of Standalone machine.
As the same code is run for some clients on Standalone machines and for some on Clustered environment, have no clue how to solve this.
I have heard something about HAJNDI in JBoss, which is used for binding objects in a cluster.
As the same code is run for some clients on Standalone machines
What do you mean by standalone machine? Is it a standalone java application that you are talking about or are you talking about a application running on a JBoss server which is NOT in a clustered environment?
If its the latter, then i do believe that using HAJNDI should as well work in a non-clustered environment. I havent read the docs yet.