Jason here is what works for me, this is what I use quite often, pom.xml (relevant part) :
<dependencies>
<!-- Jetty 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 the web.xml located at the location specified above in webappconfig as descriptor :
<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 run the server by running mvn jetty:run
and check it at http://localhost:9080/jetty-example/hello
Additionally you can add execution to the plugin part and start the jetty when you finnish building your project. Without having 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 additionally add the jetty configuration file, which I use for database(for different environments). You would add the file location in the webAppConfig
of your jetty plugin like this :
<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 sample content of the jetty-env.xml :
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"[]>
<Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext">
<!-- PRIMARY DATABASE -->
<New id="devDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>primaryDS</Arg>
<Arg>
<!-- i.e. Postgress -->
<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>
<!-- BACKUP DATABASE
<New id="devDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>backupDS</Arg>
<Arg>
.....
</Arg>
-->
</Configure>
You should be good with this.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…