Jason is what works for me, this is what I use quite often, pom.xml (the corresponding part):
<dependencies> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-embedded</artifactId> <version>6.1.26</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>7.0.2.v20100331</version> <configuration> <webAppConfig> <contextPath>/jetty-example</contextPath> <descriptor>${basedir}/src/main/webapp/WEB-INF/web.xml</descriptor> </webAppConfig> <scanIntervalSeconds>5</scanIntervalSeconds> <stopPort>9966</stopPort> <stopKey>foo</stopKey> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>9080</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> </configuration> </plugin> </plugins> </build>
Here is web.xml located at the above location in webappconfig as a handle:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>HelloWorld Application</display-name> <description> lalala </description> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.mypackage.jetty.Hello</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
And the servlet itself:
public final class Hello extends HttpServlet { private static final long serialVersionUID = 903359962771189189L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html>"); writer.println("<head>"); writer.println("<title>Sample Application Servlet Page</title>"); writer.println("</head>"); writer.println("<body bgcolor=white>"); writer.println("<table border=\"0\" cellpadding=\"10\">"); writer.println("<tr>"); writer.println("<td>"); writer.println("</td>"); writer.println("<td>"); writer.println("<h1>W00w I totally work</h1>"); writer.println("</td>"); writer.println("</tr>"); writer.println("</table>"); writer.println("</body>"); writer.println("</html>"); } }
You can start the server by running mvn jetty:run
and checking it at http://localhost:9080/jetty-example/hello
In addition, you can add performance to the plug-in and start the jetty when you finish building your project. Without the need to manually mvn jetty:run
every time.
<executions> <execution> <id>start-jetty</id> <phase>pre-integration-test</phase> <goals> <goal>run</goal> </goals> <configuration> <daemon>true</daemon> </configuration> </execution> <execution> <id>stop-jetty</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> </execution> </executions>
You can optionally add a berth configuration file, which I use for the database (for different environments). You would add the file location to webAppConfig
your fit plugin as follows:
<webAppConfig> <contextPath>/my-tool</contextPath> <descriptor>${basedir}/src/main/webapp/WEB-INF/jetty/web.xml </descriptor> <jettyEnvXml>${basedir}/src/main/webapp/WEB-INF/jetty/jetty-env.xml </jettyEnvXml> </webAppConfig>
And an example of the contents of the jetty-env.xml file:
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"[]> <Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext"> <New id="devDS" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg>primaryDS</Arg> <Arg> <New class="org.postgresql.ds.PGSimpleDataSource"> <Set name="User">myuser</Set> <Set name="Password">password</Set> <Set name="DatabaseName">database</Set> <Set name="ServerName">database.stackoverflow.com</Set> <Set name="PortNumber">5432</Set> </New> </Arg> </New> </Configure>
You must be kind with this.