配置指南:http://blog.csdn.net/ph9527/article/details/5063157
1、Jetty的配置引數
關於其他命令的更多資訊請查閱Jetty文件中的mvn jetty:run page、mvn jetty:run-exploded page、mvn jetty:run-war page。
自動執行外掛
有時候,例如在做整合測試時,你當然希望在測試開始時自動執行你的專案,測試完成時停止,而不只是手動的在命令列執行mvn jetty:run吧。
要做到這一點,你需要為jetty 外掛建立幾個<execution>指令碼,並使用<daemon>true</daemon>配置選項來預防Jetty無限期執行,迫使它只在執行Maven時才執行。
像下面pom.xml片段中描述的pre-integration-test和post-integration-test 就是用來觸發執行和關閉Jetty:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
注意:Maven預設都是通過org.apache.maven.plugins的groupId來查詢外掛的,即使這個groupId跟上面要表達的內容完全不同。為了更明確的指向這個groupId是我們需要的外掛,唯一的辦法就是在settings.xml也做如下設定:
<profile>
…
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>
</profile>
如何通過命令列停止外掛
委託Jetty外掛無限期執行的目標包括run、run-war和run-exploded。你可以在視窗控制終端(如DOS視窗)使用<ctrl-c>關閉它,或者在另一個視窗控制終端使用stop目標關閉。如果你希望能使用mvn jetty:stop 執行關閉命令,則需要你在外掛中配置一個特殊的埠和控制鍵。下面是一個例子配置:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
<configuration>
<stopPort>9966</stopPort>
<stopKey>foo</stopKey>
</configuration>
</plugin>
開始:
mvn jetty:start
關閉:
mvn jetty:stop
1. 在src/main/resources目錄下建立jetty-env.xml檔案,用來配置資料來源,檔案內容如下:
- <?xml version=“1.0” encoding=“utf-8”?>
- <!DOCTYPE Configure PUBLIC “-//Mort Bay Consulting//DTD Configure//EN”
- “http://jetty.mortbay.org/configure.dtd”>
- <Configure class=“org.mortbay.jetty.webapp.WebAppContext”>
- <New id=“dataSource” class=“org.mortbay.jetty.plus.naming.Resource”>
- <Arg>jdbc/osworkflow</Arg>
- <Arg>
- <New class=“com.mysql.jdbc.jdbc2.optional.MysqlDataSource”>
- <Set name=“url”>jdbc:mysql://localhost:3306/osworkflow?useUnicode=true&characterEncoding=UTF-8</Set>
- <Set name=“user”>root</Set>
- <Set name=“password”></Set>
- </New>
- </Arg>
- </New>
- </Configure>
2. 在配置jetty外掛時,指定這個資料來源配置檔案:
- <plugins>
- <!- jetty –>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- <version>6.1.9</version>
- <configuration>
- <scanIntervalSeconds>10</scanIntervalSeconds>
- <jettyEnvXml>src/main/resources/jetty-env.xml</jettyEnvXml>
- </configuration>
- </plugin>
- </plugins>
3. 測試。在index.jsp中進行如下測試:
- <%@ page contentType=“text/html; charset=UTF-8”%>
- <%@ page import=“javax.naming.InitialContext,javax.sql.DataSource”%>
- <html>
- <head>
- <title>JNDI datasource test</title>
- </head>
- <body>
- <h2>資料來源初始化成功!</h2>
- <%
- InitialContext context = new InitialContext();
- DataSource dataSource = (DataSource) context.lookup(“java:comp/env/jdbc/osworkflow”);
- %>
- </body>
- </html>
4、Jetty中配置根目錄啟動應用,不再需要輸入工程名稱
- <configuration>
- <contextPath>/</contextPath>
- </configuration>
完整版本:
- <jetty-version>6.1.22</jetty-version>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- <version>${jetty-version}</version>
- <configuration>
- <contextPath>/</contextPath>
- <connectors>
- <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
- <port>8081</port>
- <maxIdleTime>60000</maxIdleTime>
- </connector>
- </connectors>
- <requestLog implementation="org.mortbay.jetty.NCSARequestLog">
- <filename>target/access.log</filename>
- <retainDays>90</retainDays>
- <append>false</append>
- <extended>false</extended>
- <logTimeZone>GMT+8:00</logTimeZone>
- </requestLog>
- <systemProperties>
- <systemProperty>
- <name>productionMode</name>
- <value>false</value>
- </systemProperty>
- </systemProperties>
- </configuration>
- </plugin>
5、Jetty Debug
方式1:set MAVEN_OPTS =-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
方式2:mvndebug jetty:run