The OsgiGraphQLHttpServlet uses a “provider” model to supply the servlet with the required objects:
- GraphQLQueryProvider: Provides query fields to the GraphQL schema.
- GraphQLMutationProvider: Provides mutation fields to the GraphQL schema.
- GraphQLTypesProvider: Provides type information to the GraphQL schema.
- ExecutionStrategyProvider: Provides an execution strategy for running each query.
- GraphQLContextBuilder: Builds a context for running each query.
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.
This is the default execution strategy for the
OsgiGraphQLHttpServlet, and must be added as a dependency when using that servlet.