-
-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixes #3935 - Move micro docs from website repository to docs directo…
…ry (#3936)
- Loading branch information
Showing
4 changed files
with
241 additions
and
2 deletions.
There are no files selected for viewing
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
224 changes: 224 additions & 0 deletions
224
docs/src/site/markdown/micro/create_a_hello_world_web_application.md
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,224 @@ | ||
# Create a Hello World web application | ||
|
||
If you are looking to create a simple Hello World web application with Piranha | ||
Micro to get started then you have come to the right place! | ||
|
||
In 6 steps you will learn how to create the web application. They are: | ||
|
||
1. Create the Maven POM file | ||
1. Add the HelloWorldServlet.java file | ||
1. Add the web.xml file | ||
1. Add an integration test | ||
1. Test the application | ||
1. Deploy the application | ||
|
||
## Create the Maven POM file | ||
|
||
Create an empty directory to store your Maven project. Inside of that directory create the ```pom.xml``` file with the content as below. | ||
|
||
```xml | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
|
||
<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 | ||
http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
<groupId>cloud.piranha.guides.micro</groupId> | ||
<artifactId>helloworld</artifactId> | ||
<version>1-SNAPSHOT</version> | ||
<packaging>war</packaging> | ||
<name>Piranha Micro - Create a Hello World application</name> | ||
<properties> | ||
<piranha.distribution>micro</piranha.distribution> | ||
<piranha.version>23.9.0</piranha.version> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
</properties> | ||
<build> | ||
<finalName>piranha-micro-helloworld</finalName> | ||
<plugins> | ||
<plugin> | ||
<groupId>cloud.piranha.maven.plugins</groupId> | ||
<artifactId>piranha-maven-plugin</artifactId> | ||
<version>${piranha.version}</version> | ||
<executions> | ||
<execution> | ||
<id>pre-integration-test</id> | ||
<phase>pre-integration-test</phase> | ||
<goals> | ||
<goal>start</goal> | ||
</goals> | ||
</execution> | ||
<execution> | ||
<id>post-integration-test</id> | ||
<phase>post-integration-test</phase> | ||
<goals> | ||
<goal>stop</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
<configuration> | ||
<distribution>${piranha.distribution}</distribution> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<version>3.10.1</version> | ||
<configuration> | ||
<release>17</release> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-failsafe-plugin</artifactId> | ||
<version>3.0.0-M7</version> | ||
<executions> | ||
<execution> | ||
<goals> | ||
<goal>integration-test</goal> | ||
<goal>verify</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-war-plugin</artifactId> | ||
<version>3.3.2</version> | ||
<configuration> | ||
<failOnMissingWebXml>false</failOnMissingWebXml> | ||
</configuration> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
<dependencies> | ||
<dependency> | ||
<groupId>jakarta.platform</groupId> | ||
<artifactId>jakarta.jakartaee-web-api</artifactId> | ||
<version>10.0.0</version> | ||
<scope>provided</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.junit.jupiter</groupId> | ||
<artifactId>junit-jupiter</artifactId> | ||
<version>5.9.1</version> | ||
<scope>test</scope> | ||
</dependency> | ||
</dependencies> | ||
</project> | ||
``` | ||
|
||
## Add the Hello Servlet | ||
|
||
Add the HelloWorldServlet.java file in the `src/main/java/helloworld` directory. | ||
|
||
```java | ||
package helloworld; | ||
|
||
import java.io.IOException; | ||
import java.io.PrintWriter; | ||
import jakarta.servlet.ServletException; | ||
import jakarta.servlet.http.HttpServlet; | ||
import jakarta.servlet.http.HttpServletRequest; | ||
import jakarta.servlet.http.HttpServletResponse; | ||
|
||
public class HelloWorldServlet extends HttpServlet { | ||
|
||
@Override | ||
protected void doGet(HttpServletRequest request, | ||
HttpServletResponse response) throws IOException, ServletException { | ||
try (PrintWriter writer = response.getWriter()) { | ||
response.setContentType("text/plain"); | ||
writer.println("Hello World!"); | ||
writer.flush(); | ||
} | ||
} | ||
} | ||
``` | ||
|
||
## Add the web.xml file | ||
|
||
Add the web.xml file to the `src/main/webapp/WEB-INF` directory. | ||
|
||
```xml | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
|
||
<web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"> | ||
<servlet> | ||
<servlet-name>HelloWorldServlet</servlet-name> | ||
<servlet-class>helloworld.HelloWorldServlet</servlet-class> | ||
</servlet> | ||
<servlet-mapping> | ||
<servlet-name>HelloWorldServlet</servlet-name> | ||
<url-pattern>/index.html</url-pattern> | ||
</servlet-mapping> | ||
<session-config> | ||
<session-timeout>30</session-timeout> | ||
</session-config> | ||
</web-app> | ||
``` | ||
|
||
## Add an integration test | ||
|
||
As we want to make sure the application gets tested before we release an | ||
integration test is added which will be executed as part of the build. | ||
|
||
We'll add the integration test to the `src/test/java` directory. | ||
|
||
```java | ||
package helloworld; | ||
|
||
import java.net.URI; | ||
import java.net.http.HttpClient; | ||
import java.net.http.HttpRequest; | ||
import java.net.http.HttpResponse; | ||
import java.net.http.HttpResponse.BodyHandlers; | ||
import static org.junit.jupiter.api.Assertions.assertTrue; | ||
import org.junit.jupiter.api.Test; | ||
|
||
class HelloWorldIT { | ||
|
||
@Test | ||
void testHelloWorldHtml() throws Exception { | ||
HttpClient client = HttpClient.newHttpClient(); | ||
HttpRequest request = HttpRequest | ||
.newBuilder(new URI("http://localhost:8080/helloworld/helloworld.html")) | ||
.build(); | ||
HttpResponse<String> response = client.send(request, BodyHandlers.ofString()); | ||
assertTrue(response.body().contains("Hello World!")); | ||
} | ||
} | ||
``` | ||
|
||
## Test the application | ||
|
||
The application is setup to use JUnit to do integration testing using the | ||
Piranha Maven plugin so when you are building the application it will also | ||
execute an integration test validating the web application works. | ||
|
||
To build and test the application execute the following command: | ||
|
||
```bash | ||
mvn install | ||
``` | ||
|
||
## Deploy the application | ||
|
||
To deploy your application you will need 2 pieces. | ||
|
||
1. The Piranha Micro runtime JAR. | ||
2. The WAR file you just produced. | ||
|
||
For the WAR file see the `target` directory. For the Piranha Micro | ||
distribution go to Maven Central. And then the following command line will | ||
deploy your application: | ||
|
||
```bash | ||
java -jar piranha-dist-micro.jar --war-file helloworld.war | ||
``` | ||
|
||
## Conclusion | ||
|
||
As you can see getting started with Piranha Micro is straightforward! | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Piranha Micro | ||
|
||
Piranha Micro is a distribution that bootstrap parts of itself using Maven | ||
Central. Beyond that it delivers the same integration as Piranha Web Profile. | ||
|
||
## Documentation | ||
|
||
1. [Create a Hello World web application](create_a_hello_world_web_application.html) |
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