
To create a server specific http/2 push support of the Wicket PushBuilder API just follow these steps:

1. Add the following dependency to your projects pom.xml (and of course adjust the version)

[source,xml]
----
<dependency>
	<groupId>org.apache.wicket.experimental.wicket8</groupId>
	<artifactId>wicket-http2-core</artifactId>
	<version>0.X-SNAPSHOT</version>
</dependency>
----

[arabic, start=2]
1. Add a text file called _org.apache.wicket.IInitializer_ into the folder src/main/resources/META-INF/services/

2. Add a single line with the name of the _IInitializer_ class example: _org.apache.wicket.http2.Initializer_ to the created file

3. Implement your own server specific PushBuilder class which implements the interface  _org.apache.wicket.http2.markup.head.PushBuilder_ This is an example how it was done for jetty:

[source,java]
----
public class Jetty9PushBuilder implements PushBuilder
{
	@Override
	public void push(HttpServletRequest httpServletRequest, String... paths)
	{
		Request request = RequestCycle.get().getRequest();
		HttpServletRequest httpRequest = (HttpServletRequest) request.getContainerRequest();
		org.eclipse.jetty.server.PushBuilder pushBuilder =
		      org.eclipse.jetty.server.Request.getBaseRequest(httpRequest).getPushBuilder();
		for (String path : paths)
		{
			pushBuilder.path(path);
		}
		pushBuilder.push();
	}
}
----
[arabic, start=5]
1. Implement the class within the package _org.apache.wicket.http2.Initializer_ and add your own server specific PushBuilder class to the Http2Settings. This is an example how it was done for jetty:

[source,java]
----
public class Initializer implements IInitializer
{
	/**
	 * Initializes the push builder API of Jetty 9.3+
	 */
	@Override
	public void init(Application application)
	{
		Http2Settings http2Settings = Http2Settings.Holder.get(application);
		http2Settings.setPushBuilder(new Jetty9PushBuilder());
	}

	@Override
	public void destroy(Application application)
	{
		// NOOP
	}
}
----
