Overview

Configuration of EbeanServer instances is defined by the ServerConfig bean. It has a series of getters and setters for all the configuration options available.

In code terms a new ServerConfig instance is created and configured by either caller setter methods or loading configuration from ebean.properties or external properties. Finally EbeanServerFactory is used to take the ServerConfig and create an EbeanServer instance.

ebean.properties

The ServerConfig.loadFromProperties() loads configuration from ebean.properties file. This is can be used where some properties are set via code (calling setter methods on ServerConfig) and some from ebean.properties.

ServerConfig config = new ServerConfig();
config.setName("pg");
...
// load configuration from ebean.properties
// using "pg" as the server name
config.loadFromProperties();
...

EbeanServer server = EbeanServerFactory.create(config);

External properties

You can have an external mechanism for loading Properties and supply this to ServerConfig via: ServerConfig.loadFromProperties(Properties). This is can be used where some configuration is set via the externally loaded properties and some is set via code (calling setter methods on ServerConfig).

// load properties externally
Properties externalProps = ...;

ServerConfig config = new ServerConfig();
config.setName("pg");
...
// load configuration from external properties
// using "pg" as the server name
config.loadFromProperties(externalProps);
...

EbeanServer server = EbeanServerFactory.create(config);

Register

By default ServerConfig has register=true and this means that the EbeanServer instance is registered with the Ebean singleton and can be later accessed via Ebean.getServer(serverName)

You need to explicitly ServerConfig.setRegister(false) if you don't this feature.

ServerConfig config = new ServerConfig();
config.setName("pg");
...

EbeanServer server = EbeanServerFactory.create(config);

...

// Later on we can get the server instance
// using it's name via Ebean
EbeanServer server = Ebean.getServer("pg");

Default server

You can set ServerConfig.setDefaultServer(true) to indicate that the EbeanServer instance created should be the 'default' EbeanServer and can be later accessed via Ebean.getDefaultServer()

ServerConfig config = new ServerConfig();
config.setName("pg");
config.setDefaultServer(true);
...

EbeanServer server = EbeanServerFactory.create(config);

...

// Later on we can get the server instance ...
EbeanServer server = Ebean.getDefaultServer();

// Note: serverName of null is the same as getting the default server
EbeanServer server = Ebean.getServer(null);

Dependency injection

For dependency injection with Guice, Spring and similar DI frameworks typically a "provider" or "factory" is required that creates a ServerConfig, configures it as required perhaps using ebean.properties or external properties and then uses EbeanServerFactory to create the EbeanServer instance.

Inject and ActiveRecord

It is common and expected that you want to be able to both @Inject EbeanServer instances in the traditional DI coding style and also use the active record style. This can be done when the EbeanServer instances are created with register as true and one instance marked as the default server.