Hosting multiple modules

When to use this

One Gateway process should host multiple DLLs, JARs, or mixed-technology modules (for example .NET + Python in one GG).

Prerequisites


Steps

1. Pass comma-separated modules

./gg --modules "./ServiceA.dll,./ServiceB.dll,./plugins/Helper.dll" --runtime netcore --port 8888 --httpPort 8889

2. Mixed runtimes

When modules require different runtimes, host compatible modules together or run separate GG instances per runtime family. GG loads one primary --runtime per process; polyglot in-process hosting works when GG loads multiple runtimes for supported combinations.

Example (directory with Node package):

./gg --modules "./backend.dll,./node-helper" --runtime auto --port 8888

3. Filter per module surface

Combine with --types to expose only facades from a large deployment:

./gg --modules "./Core.dll,./Extensions.dll" --types MyApp.CoreFacade,MyApp.ExtensionsFacade --port 8888

4. Avoid directory scan issues

If --modules is omitted, GG scans the current directory. Crowded directories cause mis-detection. Prefer explicit paths:

cd /opt/my-service
./gg --modules "./bin/MyService.dll" --runtime netcore --port 8888

Verify it works

  • Vision shows all loaded modules
  • Each module's public types appear in the UGM
  • Install commands work per module/package name

Common mistakes

MistakeFix
GG loads wrong file from cwdUse --modules with explicit paths
CLR vs netcore mismatchMatch --runtime to your DLL target framework
Missing Java JAR packagingUse JAR paths, not loose .class trees

See also