Service

Build a service based on service-commons

This is a simple service example:

suspend fun main(args: Array<String>) {
    ServiceMain(
        ServiceConfiguration("verifier"), ServiceInitialization(
            features = FeatureCatalog,
            init = {
                // Init code example
                WaltidServices.init()
                DidService.apply {
                    registerResolver(LocalResolver())
                    updateResolversForMethods()
                }
            },
            run = WebService(Application::verifierModule).run()
        )
    ).main(args)
}

fun Application.configurePlugins() {
    configureHTTP()
    configureRouting()
}

fun Application.verifierModule(withPlugins: Boolean = true) {
    if (withPlugins) {
        configurePlugins()
    }
    verifierApi();
    { feature1Api() } whenFeature FeatureCatalog.feature1
    { feature2Api() } whenFeature FeatureCatalog.feature2
}

Service-commons based service startup procedure

When starting a service-commons based service, this is what happens when calling a defined ServiceMain:

  • Initializing features Registering CommonsFeatureCatalog
    • Registering features listed feature-catalogs
    • Loading feature amendments
  • Initializing service → the init block
  • Running service → the run block