Class SyncServerBuilder

java.lang.Object
io.objectbox.sync.server.SyncServerBuilder

public final class SyncServerBuilder extends Object
Creates a SyncServer and allows to set additional configuration.
  • Constructor Details

  • Method Details

    • certificatePath

      public SyncServerBuilder certificatePath(String certificatePath)
      Sets the path to a directory that contains a cert.pem and key.pem file to use to establish encrypted connections.

      Use the "wss://" protocol for the server URL to turn on encrypted connections.

    • authenticatorCredentials

      public SyncServerBuilder authenticatorCredentials(SyncCredentials authenticatorCredentials)
      Adds additional authenticator credentials to authenticate clients or peers with.

      For the embedded server, currently only SyncCredentials.sharedSecret(java.lang.String), any JWT method like SyncCredentials.jwtIdTokenServer() as well as SyncCredentials.none() are supported.

    • changeListener

      public SyncServerBuilder changeListener(SyncChangeListener changeListener)
      Sets a listener to observe fine granular changes happening during sync.

      This listener can also be set or removed on the Sync server directly.

    • clusterId

      public SyncServerBuilder clusterId(String id)
      Enables cluster mode (requires the Cluster feature) and associates this cluster peer with the given ID.

      Cluster peers need to share the same ID to be in the same cluster.

      See Also:
    • clusterPeer

      public SyncServerBuilder clusterPeer(String url, SyncCredentials credentials)
      Adds a (remote) cluster peer, to which this server should connect to as a client using the given credentials.

      To use this, must set a clusterId(String).

    • clusterFlags

      public SyncServerBuilder clusterFlags(int flags)
      Sets bit flags to configure the cluster behavior of the Sync server (aka cluster peer).

      To use this, must set a clusterId(String).

      Parameters:
      flags - One or more of ClusterFlags.
    • historySizeMaxKb

      public SyncServerBuilder historySizeMaxKb(long historySizeMaxKb)
      Sets the maximum transaction history size.

      Once the maximum size is reached, old transaction logs are deleted to stay below this limit. This is sometimes also called "history pruning" in the context of Sync.

      If not set or set to 0, defaults to no limit.

      See Also:
    • historySizeTargetKb

      public SyncServerBuilder historySizeTargetKb(long historySizeTargetKb)
      Sets the target transaction history size.

      Once the maximum size (historySizeMaxKb(long)) is reached, old transaction logs are deleted until this size target is reached (lower than the maximum size). Using this target size typically lowers the frequency of history pruning and thus may improve efficiency.

      If not set or set to 0, defaults to historySizeMaxKb(long).

    • syncFlags

      public SyncServerBuilder syncFlags(int syncFlags)
      Sets bit flags to adjust Sync behavior, like additional logging.
      Parameters:
      syncFlags - One or more of SyncFlags.
    • syncServerFlags

      public SyncServerBuilder syncServerFlags(int syncServerFlags)
      Sets bit flags to configure the Sync server.
      Parameters:
      syncServerFlags - One or more of SyncServerFlags.
    • workerThreads

      public SyncServerBuilder workerThreads(int workerThreads)
      Sets the number of workers for the main task pool.

      If not set or set to 0, this uses a hardware-dependant default, e.g. 3 * CPU "cores".

    • jwtPublicKey

      public SyncServerBuilder jwtPublicKey(String publicKey)
      Sets the public key used to verify JWT tokens.

      The public key should be in the PEM format.

      However, typically the key is supplied using a JWKS file served from a jwtPublicKeyUrl(String).

      See jwtPublicKeyUrl(String) for a common configuration to enable JWT auth.

    • jwtPublicKeyUrl

      public SyncServerBuilder jwtPublicKeyUrl(String publicKeyUrl)
      Sets the JWKS (Json Web Key Sets) URL to fetch the current public key used to verify JWT tokens.

      A working JWT configuration can look like this:

      
       SyncCredentials auth = SyncCredentials.jwtIdTokenServer();
       SyncServer server = Sync.server(store, url, auth)
               .jwtPublicKeyUrl("https://example.com/public-key")
               .jwtClaimAud("<audience>")
               .jwtClaimIss("<issuer>")
               .build();
       
      See the JWT authentication documentation for details.
    • jwtClaimIss

      public SyncServerBuilder jwtClaimIss(String claimIss)
      Sets the JWT claim "iss" (issuer) used to verify JWT tokens.
      See Also:
    • jwtClaimAud

      public SyncServerBuilder jwtClaimAud(String claimAud)
      Sets the JWT claim "aud" (audience) used to verify JWT tokens.
      See Also:
    • build

      public SyncServer build()
      Builds and returns a Sync server ready to SyncServer.start().

      Note: this clears all previously set authenticator credentials.

    • buildAndStart

      public SyncServer buildAndStart()
      Builds, starts and returns a Sync server.