A Java-friendly version of the TwitterServer.
A Java-friendly version of the TwitterServer.
In addition to TwitterServer, this abstract class defines its own
Java-friendly lifecycle methods onInit
, preMain
, postMain
and
onExit
that might be overridden in a concrete class.
In order to launch the AbstractTwitterServer
instance, the main
method should be explicitly defined. It makes sense to define it
within an inner class Main
as shown below.
public class JavaServer extends AbstractTwitterServer { public static class Main { public static void main(String[] args) { new JavaServer().main(args); } } }
The Main
class containing the main
method may be launched via
java JavaServer$Main
.
Defines many of the default /admin/
HTTP routes.
Defines a hook into an com.twitter.app.App.
Mix-in to include service-loaded hooks.
Registers any global linter rules.
Indicates that a com.twitter.finagle.Resolver was not found for the
given name
using the FlagResolver.
Indicates that a com.twitter.finagle.Resolver was not found for the
given name
using the FlagResolver.
Resolvers are discovered via the com.twitter.server.resolverMap
Create a new hook for the given App.
Create a new hook for the given App. NewHooks are service-loaded.
To use, extend the NewHook trait and implement an apply method which returns a Hook implementation, e.g.,
Add the Hook as a service-loaded class in /META-INF/services/com.twitter.server.NewHook
class MyHook extends NewHook { def apply(app: App) = new Hook { override def premain(): Unit = ??? override def onExit(): Unit = ??? } }
com.twitter.finagle.util.LoadService
Twitter Server defines a template from which servers at Twitter are built.
Twitter Server defines a template from which servers at Twitter are built. It provides common application components such as an administrative HTTP server, tracing, stats, etc. These features are wired in correctly for use in production at Twitter.
For DI (Dependency Injection) Twitter Server uses self-typed Scala traits
that might be mixed in the TwitterServer
trait. The common practice is
to define self-typed traits against the App trait as shown below.
import com.twitter.app.App import com.twitter.server.TwitterServer trait MyModule { self: App => // module logic } object MyApp extends TwitterServer with MyModule { // app logic }
Note: the Slf4jBridge trait MUST be defined first to properly bridge legacy logging APIs.
(Since version 2019-04-03) Users should prefer using Dtabs which are overridable by setting the dtab.add
flag
Twitter Server
Provides a common configuration setup for internal Twitter servers based on com.twitter.app.App.
An HTTP server is bound to a configurable port (default: 9900) to which commands can be sent and information queried. Additional handlers can be provided by adding them to com.twitter.finagle.http.HttpMuxer.
Provided handlers
See com.twitter.server.TwitterServer
Configuration
The default port is set via defaultAdminPort. This can be overridden in the super class or set on the command line with -admin.port.