Jetty使用总结

简介:

1、Jetty的配置参数

 关于其他命令的更多信息请查阅Jetty文档中的mvn jetty:run pagemvn jetty:run-exploded pagemvn jetty:run-war page

自动执行插件

   有时候,例如在做集成测试时,你当然希望在测试开始时自动运行你的项目,测试完成时停止,而不只是手动的在命令行执行mvn jetty:run吧。

   要做到这一点,你需要为jetty 插件创建几个<execution>脚本,并使用<daemon>true</daemon>配置选项来预防Jetty无限期运行,迫使它只在执行Maven时才运行。

  像下面pom.xml片段中描述的pre-integration-testpost-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.pluginsgroupId来查找插件的,即使这个groupId跟上面要表达的内容完全不同。为了更明确的指向这个groupId是我们需要的插件,唯一的办法就是在settings.xml也做如下设置:

       <profile>

                 ...

                                       <pluginGroups>

                                         <pluginGroup>org.mortbay.jetty</pluginGroup>

                                       </pluginGroups>

</profile>

 

如何通过命令行停止插件

  委托Jetty插件无限期运行的目标包括runrun-warrun-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

 

在使用jetty插件调试maven war项目时,我们可能需要为servlet容器(这里是jetty)配置一个数据源。下面介绍如何为jetty插件配置数据源。 

1. 在src/main/resources目录下创建jetty-env.xml文件,用来配置数据源,文件内容如下: 

Xml代码 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"  
  3. "http://jetty.mortbay.org/configure.dtd">  
  4. <Configure class="org.mortbay.jetty.webapp.WebAppContext">  
  5.     <New id="dataSource" class="org.mortbay.jetty.plus.naming.Resource">  
  6.         <Arg>jdbc/osworkflow</Arg>  
  7.         <Arg>  
  8.             <New class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">  
  9.                 <Set name="url">jdbc:mysql://localhost:3306/osworkflow?useUnicode=true&characterEncoding=UTF-8</Set>  
  10.                 <Set name="user">root</Set>  
  11.                 <Set name="password"></Set>  
  12.             </New>  
  13.         </Arg>  
  14.     </New>  
  15. </Configure>  


2. 在配置jetty插件时,指定这个数据源配置文件: 

Xml代码 
  1. <plugins>  
  2.     <!- jetty ->  
  3.     <plugin>  
  4.         <groupId>org.mortbay.jetty</groupId>  
  5.         <artifactId>maven-jetty-plugin</artifactId>  
  6.         <version>6.1.9</version>  
  7.         <configuration>  
  8.             <scanIntervalSeconds>10</scanIntervalSeconds>  
  9.             <jettyEnvXml>src/main/resources/jetty-env.xml</jettyEnvXml>  
  10.         </configuration>  
  11.     </plugin>  
  12. </plugins>  


3. 测试。在index.jsp中进行如下测试: 
Jsp代码 
  1. <%@ page contentType="text/html; charset=UTF-8"%>  
  2. <%@ page import="javax.naming.InitialContext,javax.sql.DataSource"%>  
  3. <html>  
  4. <head>  
  5. <title>JNDI datasource test</title>  
  6. </head>  
  7. <body>  
  8. <h2>数据源初始化成功!</h2>  
  9. <%  
  10.     InitialContext context = new InitialContext();  
  11.     DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/osworkflow");  
  12. %>  
  13. </body>  
  14. </html>  

 4、Jetty中配置根目录启动应用,不再需要输入工程名称

 
  1. <configuration> 
  2.                     <contextPath>/</contextPath> 
  3.                 </configuration> 

完整版本:

 
  1. <jetty-version>6.1.22</jetty-version> 
  2.  
  3.   <plugin> 
  4.                 <groupId>org.mortbay.jetty</groupId> 
  5.                 <artifactId>maven-jetty-plugin</artifactId> 
  6.                 <version>${jetty-version}</version> 
  7.                 <configuration> 
  8.                     <contextPath>/</contextPath> 
  9.                     <connectors> 
  10.                         <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> 
  11.                             <port>8081</port> 
  12.                             <maxIdleTime>60000</maxIdleTime> 
  13.                         </connector> 
  14.                     </connectors> 
  15.                     <requestLog implementation="org.mortbay.jetty.NCSARequestLog"> 
  16.                         <filename>target/access.log</filename> 
  17.                         <retainDays>90</retainDays> 
  18.                         <append>false</append> 
  19.                         <extended>false</extended> 
  20.                         <logTimeZone>GMT+8:00</logTimeZone> 
  21.                     </requestLog> 
  22.                     <systemProperties> 
  23.                         <systemProperty> 
  24.                             <name>productionMode</name> 
  25.                             <value>false</value> 
  26.                         </systemProperty> 
  27.                     </systemProperties> 
  28.                 </configuration> 
  29.             </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

 

 本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/423405,如需转载请自行联系原作者

相关文章
|
Java
jetty 9使用
jetty 9 使用 下载jdk 7   http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.
1586 0
|
缓存 分布式计算 API
Spark Netty与Jetty (源码阅读十一)
  spark呢,对Netty API又做了一层封装,那么Netty是什么呢~是个鬼。它基于NIO的服务端客户端框架,具体不再说了,下面开始。   创建了一个线程工厂,生成的线程都给定一个前缀名。      像一般的netty框架一样,创建Netty的EventLoopGroup:      在常用...
1068 0