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.