Skip to content

Instantly share code, notes, and snippets.

@eduard-vasinskyi
Created August 3, 2020 12:46
Show Gist options
  • Save eduard-vasinskyi/17ea7ddb4dbbb00a904ca40c9b27f25f to your computer and use it in GitHub Desktop.
Save eduard-vasinskyi/17ea7ddb4dbbb00a904ca40c9b27f25f to your computer and use it in GitHub Desktop.
An example that shows how to dynamically change servlets
package io.activej.launchers.http;
import io.activej.http.AsyncServlet;
import io.activej.http.HttpResponse;
import io.activej.http.RoutingServlet;
import io.activej.inject.annotation.Named;
import io.activej.inject.annotation.Provides;
import java.util.concurrent.ThreadLocalRandom;
public final class DynamicServletLauncher extends HttpServerLauncher {
@Provides
AsyncServlet mainServlet(@Named("First") AsyncServlet firstServlet, @Named("Second") AsyncServlet secondServlet) {
return RoutingServlet.create()
.map("/*", request -> HttpResponse.ok200()
.withHtml("<h2><a href='/dynamic'>Go to dynamic servlet</a></h2>"))
.map("/dynamic/*", request -> {
if (ThreadLocalRandom.current().nextBoolean()) {
return firstServlet.serve(request);
} else {
return secondServlet.serve(request);
}
});
}
@Provides
@Named("First")
AsyncServlet firstServlet() {
return request -> HttpResponse.ok200().withHtml("<h1>This page is served by first servlet</h1>");
}
@Provides
@Named("Second")
AsyncServlet secondServlet() {
return request -> HttpResponse.ok200().withHtml("<h1>This page is served by second servlet</h1>");
}
public static void main(String[] args) throws Exception {
new DynamicServletLauncher().launch(args);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment