The OsgiGraphQLHttpServlet uses a “provider” model to supply the servlet with the required objects:


You can now find some example on how to use graphql-java-servlet.


The OSGi examples use Maven as a build tool because it requires plugins that are not (yet) available for Gradle. Therefore you will need Maven 3.2+.

Building & running the OSGi examples

You can build the OSGi examples sub-projects by simply executing the following command from the examples/osgi directory:

mvn clean install

This will generate a complete Apache Karaf distribution in the following files:


You can simply uncompress this file and launch the OSGi server using the command from the uncompressed directory:


You should then be able to access the GraphQL endpoint at the following URL once the server is started:


If you see the JSON result of an introspection query, then all is ok. If not, check the data/log/karaf.log file for any errors.

We also provide a script file to do all of the building and running at once (only for Linux / MacOS):


Deploying inside Apache Karaf server

You can use the graphql-java-servlet as part of an Apache Karaf feature, as you can see in the example project here:

And here is a sample src/main/feature/feature.xml file to add some dependencies on other features:

Example GraphQL provider implementation

Here’s an example of a GraphQL provider that implements three interfaces at the same time.

Relay.js support

Relay.js support is provided by the EnhancedExecutionStrategy of graphql-java-annotations. You MUST pass this execution strategy to the servlet for Relay.js support.

This is the default execution strategy for the OsgiGraphQLHttpServlet, and must be added as a dependency when using that servlet.