Skip to content

Commit

Permalink
Merge pull request #10 from BlazingTwist/undertow-example
Browse files Browse the repository at this point in the history
Undertow Example for ResourceHosting and an HTTP-GET Microservice
  • Loading branch information
BlazingTwist authored Nov 22, 2023
2 parents 2592191 + 1c30521 commit d886b27
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 0 deletions.
8 changes: 8 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@
<version>1.4.11</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.undertow/undertow-servlet -->
<dependency>
<groupId>io.undertow</groupId>
<artifactId>undertow-servlet</artifactId>
<version>2.3.10.Final</version>
</dependency>


</dependencies>

</project>
61 changes: 61 additions & 0 deletions src/main/java/example/undertow/UndertowMicroserviceGET.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package example.undertow;

import io.undertow.Handlers;
import io.undertow.Undertow;
import io.undertow.server.HttpHandler;
import io.undertow.server.handlers.PathHandler;
import io.undertow.servlet.Servlets;
import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.DeploymentManager;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.PrintWriter;

/**
* Hostet einen einfachen Microservice unter <a href="http://localhost:8080/micro">localhost/micro</a>
*/
public class UndertowMicroserviceGET {
private static final Logger logger = LoggerFactory.getLogger(UndertowResourceHosting.class);

@SuppressWarnings("DuplicatedCode") // example code. Duplication is allowed
public static void main(String[] args) throws ServletException {
DeploymentInfo deployment = Servlets.deployment()
.setClassLoader(UndertowResourceHosting.class.getClassLoader())
.setContextPath("")
.setDeploymentName("Example_UndertowMicroserviceGET")
.addServlet(Servlets.servlet("ExampleMicroservice", MicroserviceImpl.class).addMapping("/micro"));

DeploymentManager manager = Servlets.defaultContainer().addDeployment(deployment);
manager.deploy();
HttpHandler handler = manager.start();
PathHandler pathHandler = Handlers.path(handler);

Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(pathHandler)
.build();
server.start();
logger.info("Server started");
}

public static final class MicroserviceImpl extends HttpServlet {
private int numberOfRequests = 0;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
numberOfRequests++;
String message = "Your visitor-number is #" + numberOfRequests;

resp.setContentType("text/html");
PrintWriter responseWriter = resp.getWriter();
responseWriter.println("<html><body><h2>" + message + "</h2></body/></html>");
responseWriter.close();
}
}
}
43 changes: 43 additions & 0 deletions src/main/java/example/undertow/UndertowResourceHosting.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package example.undertow;

import io.undertow.Handlers;
import io.undertow.Undertow;
import io.undertow.server.HttpHandler;
import io.undertow.server.handlers.PathHandler;
import io.undertow.server.handlers.resource.ClassPathResourceManager;
import io.undertow.servlet.Servlets;
import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.DeploymentManager;
import jakarta.servlet.ServletException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Einfaches Undertow Beispiel mit Resource hosting.<p>
* Ressourcen können dann im Browser geöffnet werden,
* z.B. '<a href="http://localhost:8080/jchess/images.org/Bishop-W.png">Bishop-W.png</a>'
*/
public class UndertowResourceHosting {
private static final Logger logger = LoggerFactory.getLogger(UndertowResourceHosting.class);

@SuppressWarnings("DuplicatedCode") // example code. Duplication is allowed
public static void main(String[] args) throws ServletException {
DeploymentInfo deployment = Servlets.deployment()
.setClassLoader(UndertowResourceHosting.class.getClassLoader())
.setContextPath("")
.setDeploymentName("Example_UndertowResourceHosting")
.setResourceManager(new ClassPathResourceManager(UndertowResourceHosting.class.getClassLoader()));

DeploymentManager manager = Servlets.defaultContainer().addDeployment(deployment);
manager.deploy();
HttpHandler handler = manager.start();
PathHandler pathHandler = Handlers.path(handler);

Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(pathHandler)
.build();
server.start();
logger.info("Server started");
}
}

0 comments on commit d886b27

Please sign in to comment.