Skip to main content

JVM Embedded Repo

A JVM-embedded repo is an Iglu repository embedded inside a Java or Scala application, typically alongside the Scala client.

Technical architecture

A JVM-embedded repo is simply a set of schemas stored in an Iglu-compatible path inside the resources folder of a Java or Scala application.

As an embedded repo, there is a no mechanism for updating the schemas stored in the repository following the release of the host application.

Example

For an example of a JVM-embedded repo, check out the repository embedded in the Iglu Scala client itself:

https://github.com/snowplow/iglu-scala-client/tree/0.1.0/src/main/resources/iglu-client-embedded

This embedded repository is used to bootstrap the Iglu Scala client with JSON Schemas that it needs before it can access any remote repositories.

Setup

1. Prepare your files

You need to create a file structure for your JSON Schemas. Please check out the template we provide here:

https://github.com/snowplow/iglu/tree/master/2-repositories/jvm-embedded-repo/template

Make the following changes:

  • Replace com.myvendor with your company domain, reverse-ordered
  • Replace myschema with the name of your first JSON Schema
  • Leave jsonschema as-is (we only support JSON Schemas for now)
  • Replace 1-0-0 with the schema specification of your first JSON Schema

Writing JSON Schemas is out of scope for this setup guide - see Self-describing-JSONs-and-JSON-Schemas for details.

Done? Now you are ready to embed your files.

2. Embed your files

You now need to embed your JSON Schema files into your Java or Scala application.

The Iglu Scala client will expect to find these JSON Schema files included in the application as resources. Therefore, you should store the files in a path something like this:

myapp/src/main/resources/my-repo/schemas

3. Update your Iglu client configuration

Finally, update your Iglu client configuration so that it can resolve your new repository.

For details on how to do this, check out the page on Iglu client configuration. In the case above, the path you would specify for your embedded Iglu repository would be simply /my-repo.