-
Notifications
You must be signed in to change notification settings - Fork 1
Architecture
The hardware architecture of our system is based on a Master-Slave concept, with one Master and a number of slaves. Our software will be the same on the master and the slaves, just configured differently. On the master there is also a MQTT message broker. The communication between all Nodes is done with MQTT.
The Core creates the Service Container and deploys common services, additionally all Services from the Deployment descriptor META-INF/io.github.amyassist.amy.core.di.Services
on the classpath are deployed.
This Services can come from other jars on the classpath or from classes that was packed into the main jar.
After that the plugins are loaded. This means a Classloader is created to access all classes and resources from the plugin. The Classloader is used to deploy all Services of the plugins to the Service Container.
Then the Core triggers the deploy
callback, so Services that implement this callback gets called.
Middleware can be configured and from the main Classloader and/or from the plugins Classloader components can be deployed to Container of the Middleware or Containers managed by the Adapter.
The Components can use services from the Service Container.
It is up to the Adapter how the Components can access Services.
One way is to use dependency injection.
Now the application is fully loaded and can be started.
Core triggers the start
callback.
Detailed information about the classes can be found in the JavaDoc.