Interface EnterpriseJettyComponent
- All Superinterfaces:
DeephavenApiServerComponent
This is the root component definition for DnD workers. Dhc and Dnd use Dagger 2 as
a framework for Dependency Injection. This component presents a Builder object to create the
DeephavenApiServer
. Each module provides some subset of objects to the builder and
may also require certain other objects denoted by Provides
. Dagger will inspect the set of modules and
generate a builder that invokes the component methods lazily and the correct order so that each and every requirement
is satisfied. If a requirement is not satisfied by some component, or two components supply the same requirement it
results in a compile error.
In a nutshell, this lets us easily swap out component providers without having to write tons of builder code and
manual dependency resolution. An example here is the two ConsoleSessionWithDatabaseModules. In vanilla DHC the
providers for "python" and "groovy Console ScriptSession
s are provided by
PythonConsoleSessionModule
and
GroovyConsoleSessionModule
. Those are not sufficient for DnD because we
need to be able to initialize them with our custom Database
object. All we
had to do to make this swap was to change the component reference in the modules list below to our own subcomponents
PythonConsoleSessionWithDatabaseModule
and GroovyConsoleSessionWithDatabaseModule
.
Further, if you wanted to add sessions for other languages, it would be as simple as adding another component provider to this modules list, and defining the module class.
Finally, anything that is not provided directly by a component can be injected directly into the EnterpriseJettyComponent.Builder
below so that the creator can inject whatever it needs, see Main.runDhcServer(io.deephaven.configuration.Configuration, java.io.PrintStream, java.io.PrintStream, io.deephaven.enterprise.auth.UserContext, int, io.deephaven.enterprise.dispatcher.client.DispatcherClient, java.util.concurrent.Future<java.lang.Boolean>, io.deephaven.enterprise.auth.audit.AuditEventLogger, io.deephaven.enterprise.dispatcher.client.WorkerDetails, io.deephaven.enterprise.dnd.CreationJsonParser, java.lang.String, io.deephaven.shadow.enterprise.com.fishlib.io.logger.Logger)
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interface
The root builder for the DnD jetty component. -
Method Summary
Methods inherited from interface io.deephaven.server.runner.DeephavenApiServerComponent
getServer
-
Method Details
-
getScriptSession
ScriptSession getScriptSession()- Returns:
- the script session that DHC's dep graph already creates
-