Server component architecture

The high-level features of the services are implemented in the AbstractKosmosService class. This where the initialization and caching is performed. You should start learning the server component code by studying its javadocs. Also, to understand the cache store mechanism, please take a look at the CachedDataStore interface and WebdavCachedDataStore as a sample implementation.

As the monitored resources and their interfaces vary a lot, there is no uniform way for the concrete services to access them. They use various techniques to get the information requested, ranging from simple page-scraping to using proprietary APIs. All these are documented in the javadocs of the concrete XxxServiceImpl implementation classes which use callback-like classes XxxHandler to do the actual work.

From the server to the portlets, the data is transferred simply by instantiating the DTO classes in the hu.midori.kosmos.protocol package and sending them over the wire using Hessian. All this is very simple and lightweight.