Skip to main content

PlatformWebRuntime

PlatformWebRuntime is the runtime application shell of the Geelato web platform. It is the runnable entry that boots the shared geelato-web-platform base for business-execution scenarios.

What It Is

PlatformWebRuntime is a Spring Boot main class:

  • package: cn.geelato.web.runtime
  • class: cn.geelato.web.runtime.PlatformWebRuntime
  • main class: cn.geelato.web.runtime.PlatformWebRuntime
  • declared in module: geelato-web-runtime

The full source is:

@SpringBootApplication(scanBasePackages = {"cn.geelato"})
@EnableConfigurationProperties
@EnableCaching
@EnableAsync(proxyTargetClass = true)
public class PlatformWebRuntime extends BootApplication {

public static void main(String[] args) {
SpringApplication.run(PlatformWebRuntime.class, args);
}
}

It extends cn.geelato.web.platform.boot.BootApplication, which is the shared Geelato runtime bootstrap coordinator (see Startup Process for the full chain).

Module Coordinates

ItemValue
Maven artifactIdgeelato-web-runtime
Module pathgeelato-community/geelato-web-runtime
Packagingjar
spring-boot-maven-plugin mainClasscn.geelato.web.runtime.PlatformWebRuntime
spring-boot-maven-plugin classifierexec
Direct dependenciesgeelato-web-platform, spring-boot-starter-test (test scope)

The module deliberately has only one direct dependency (geelato-web-platform). All platform capabilities come transitively from the shared base.

Default Configuration

geelato-web-runtime/src/main/resources/application.properties:

spring.application.name=geelato-web-runtime
logging.level.root=INFO
logging.level.cn.geelato=INFO

The shell currently overrides only the application name and log levels. All other settings (datasource, upload, security, plugin directory, etc.) come from the shared base or the host project that consumes this shell.

What It Provides

When the shell starts, it brings up everything the shared base declares, including:

  • the geelato-web-platform controllers and services
  • the default BootApplication startup chain (datasource, SQL/Graal scripts, environment cache)
  • the framework starter wiring (geelato-framework-starter)
  • the metadata loading layer (geelato-meta)
  • the plugin runtime (pf4j + geelato-plugins/geelato-plugin-all)
  • the OSS, package, security, and Redis integrations declared by the shared base

It enables Spring caching and async execution with CGLIB proxying (@EnableAsync(proxyTargetClass = true)) and exposes @ConfigurationProperties beans.

Relationship with BootApplication

PlatformWebRuntime does not duplicate any startup work. It only sets the cn.geelato scan base and enables caching, async, and configuration properties. The actual startup work happens in BootApplication.run(...):

  1. DataSourceManager.parseDataSourceMeta(dao)
  2. SQL / DB script loading (exploded mode or fat-jar mode)
  3. Graal service and variable scanning
  4. EnvManager.EnvInit()

See Startup Process for details.

How to Run

mvn -pl geelato-web-runtime spring-boot:run

or build the runnable jar:

mvn -pl geelato-web-runtime clean package
java -jar geelato-web-runtime/target/geelato-web-runtime-1.0.0-SNAPSHOT-exec.jar

Relationship with PlatformDesginer

PlatformWebRuntime and PlatformDesginer are structurally identical shells. They:

  • both extend BootApplication
  • both depend only on geelato-web-platform
  • both have the same Spring annotations
  • differ only in spring.application.name and the main class FQN

There is no code-level "switch" between runtime and designer mode. The two jars are two independent deployable entry points. A host project picks one of them as its main class. Splitting endpoint surface between the two is not yet part of the shared base; both shells currently expose the full endpoint set from geelato-web-platform.

Suggested Reading