jetty

Jetty Runner Example

In this example, we will show how to use jetty runner. Jetty runner is a concept where you run your web applications with a single jar without installing jetty. You don’t need to administer jetty distribution in this case. Jetty runner is a standalone jar which can be used to deploy multiple web applications or run web applications with different configurations or even to configure JDBC JNDI Resource. Jetty runner is a more command line tool.

1. Environment

  • Windows 7 SP 1
  • Eclipse Kepler 4.3
  • Jetty runner version 9.2.10.v20150310
  • Java version 7
  • Java Servlet library – servlet-api-3.1
  • Maven 3.0.4

2. Example Outline

In this example, we will download jetty-runner jar. We will create a simple web-app with a single context and deploy that through jetty-runner . We will create two different web-apps and deploy them through jetty-runner . You can download jetty-runner here.

3. Jetty Runner Example

Here we will create two simple web applications web-app1 and web-app2 and then show how to run a single webapp through jetty-runner and how to run multiple webapps.

3.1 Create a Maven project for Web-app1

3.1.1 Maven Project

As shown in below screenshot, create a new maven project in eclipse. Fill in the detail with GroupId as com.javacodegeeks.example and ArtifactId as webapp1 .

Maven Project for WebApp1
Maven Project for WebApp1

Add following dependencies in pom.xml
pom.xml

<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>com.javacodegeeks.example</groupId>
  <artifactId>webapp1</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <dependencies>
  	<dependency>
  		<groupId>org.eclipse.jetty</groupId>
  		<artifactId>jetty-servlet</artifactId>
  		<version>9.2.15.v20160210</version>
  	</dependency>
  	<dependency>
  		<groupId>org.eclipse.jetty</groupId>
  		<artifactId>jetty-webapp</artifactId>
  		<version>9.2.15.v20160210</version>
  	</dependency>
  </dependencies>
</project>

3.1.2 Source Code for WebApp1

We will create a simple servlet for our webapp1 . Create a java file WebApp1Servlet under src->main->java as shown below:

WebApp1Servlet
WebApp1Servlet

WebApp1Servlet.java

package com.javacodegeeks.example;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class WebApp1Servlet
 */
@WebServlet("/WebApp1Servlet")
public class WebApp1Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public WebApp1Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("<h1>Hello Jetty Runner Servlet Web App 1</h1>"); 
                out.println("</html>"); 
                out.println("</body>"); 
           } 
         /** 
           * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
           */ 
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
              // TODO Auto-generated method stub 
            } 
 }

If you create a maven project, sometimes by default, it won’t let you create a servlet class. To fix this, go to project -> properties -> project facets -> check Dynamic Web Module checkbox . Remember we are using java version 1.7, so you will have check the checkbox for Java version 1.7 in Project facets.

3.2 Create a Maven project for Web-app2

3.2.1 Maven Project

Let’s create another maven project for webapp2 as shown below. Fill in the details for GroupId as com.javacodegeeks.example and ArtifactId as webapp2 .

Maven Project WebApp2
Maven Project WebApp2

Add following dependencies in pom.xml
pom.xml

<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>com.javacodegeeks.example</groupId>
  <artifactId>webapp1</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <dependencies>
  	<dependency>
  		<groupId>org.eclipse.jetty</groupId>
  		<artifactId>jetty-servlet</artifactId>
  		<version>9.2.15.v20160210</version>
  	</dependency>
  	<dependency>
  		<groupId>org.eclipse.jetty</groupId>
  		<artifactId>jetty-webapp</artifactId>
  		<version>9.2.15.v20160210</version>
  	</dependency>
  </dependencies>
</project>

3.2.2 Source code for WebApp2

We will create a simple servlet for our webapp1 . Create a java file WebApp2Servlet under src->main->java as shown below:

WebApp2Servlet
WebApp2Servlet

WebApp2Servlet.java

package com.javacodegeeks.example;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class WebApp2Servlet
 */
@WebServlet("/WebApp2Servlet")
public class WebApp2Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public WebApp2Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("<h1>New Jetty Runner Servlet Web App 2 </h1>");  
                out.println("</body>");
                out.println("</html>"); 
          } 
        /** 
          * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
          */ 
         protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // TODO Auto-generated method stub  
            } 
  }

3.3 Save and Export War files

Now save both projects in eclipse and export them as separate war files as webapp1.war and webapp2.war as shown below

Export Project as WAR file
Export Project as WAR file

3.4 Run Jetty Runner

Once we have downloaded jetty-runner jar file in directory c:/jetty , we can run our example war files.

3.4.1 Running Single Web Application

Go to directory where you have downloaded jetty-runner and use following command to run single web application. java -jar jetty-runner-9.2.10.v20150310.jar webapp1.war . This will be default run the web application on port 8080. So if we go to browser and access http://localhost:8080/WebApp1Servlet , we will see the result as below

Running WebApp1Servlet in browser
Running WebApp1Servlet in browser

3.4.2 Running Multiple Web Applications

To run multiple web applications, just use the following command java -jar jetty-runner-9.2.10.v20150310.jar --path /one webapp1.war --path /two webapp2.war . Go to browser and access http://localhost:8080/one/WebApp1Servlet and http://localhost:8080/two/WebApp2Servlet . With --path , we are providing a context path.

Running multiple web-apps - WebApp1Servlet
Running multiple web-apps – WebApp1Servlet

Running Multiple WebApps - WebApp2Servlet
Running Multiple web-apps – WebApp2Servlet

jetty-runner can be used to configure a port for server and all other configurations.

4. Conclusion

In this example, we showed how to use jetty-runner to run web applications. jetty-runner offers the flexibility of not installing jetty distribution.

5. Download the eclipse project

This was an example for Jetty Runner.

Download
You can download the full source code of this example here: jettyrunner

Yogesh Mali

Yogesh currently lives in Minneapolis and works as a Senior Software Engineer. He has a masters degree in Computer Science from University of Minnesota, Twin Cities. At graduate school, he did research in programming languages because of his love for functional and object oriented programming. Currently he delves into more details of Java, web development and security. Previously he worked as a product manager to create web application for health insurance brokers. In his free time, he listens to music and writes fictional stories.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
Back to top button