-
-
Save eduard-vasinskyi/17ea7ddb4dbbb00a904ca40c9b27f25f to your computer and use it in GitHub Desktop.
An example that shows how to dynamically change servlets
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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