通过Maven的Jetty插件运行Web工程的配置

在java web程序开发调试阶段,我们一般都不是直接用tomcat 或 其它web容器,而是用jetty,因为他不但支持maven项目,而且支持即时编译(定时重载代码),代码修改后直接生效(注:配置文件修改后还是要重新启动),而使用 Tomcat 的 onreload 经常修改几下就整个应用在重启,而且经常排队,非常耗时。Jetty 缺点是的配置对 pom.xml 的侵入比较大,尤其是 http 和 https 的混合配置更是需要在 pom.xml 中配置固定的端口号,让代码看起来不够干净。

方法一:运用Maven的plugin:jetty来部署

Jetty7/8 的Maven插件配置:http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin

Jetty9 最新的Maven插件配置:http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html 或者 最新RELEASE版配置

Jetty 各个版本的限制:http://wiki.eclipse.org/Jetty/Starting/Jetty_Version_Comparison_Table

Jetty 7 必须 Jdk 1.5+,Servlet 2.5,类似于 Tomcat 6,文章编写时的 Release 版本:

<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>7.6.17.v20150415</version>
</plugin>

Jetty 8 必须 Jdk 1.6+,Servlet 3.0,类似于 Tomcat 7,文章编写时的 Release 版本:

<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>8.1.16.v20140903</version>
</plugin>

Jetty 9 必须 Jdk 1.7+,Servlet 3.0+,类似于 Tomcat 8,文章编写时的 Release 版本:

<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>9.2.10.v20150310</version>
</plugin>

国内很多应用也许会去升级JDK版本,但往往还在使用Servlet2.5做开发,所以本文使用 Jetty 8 作为案例。

单独使用HTTP

在项目的 pom.xml 里面添加如下配置:

<project>
  ....
  <build>
    ....
      <plugins>
        <plugin>
           <groupId>org.mortbay.jetty</groupId>
           <artifactId>jetty-maven-plugin</artifactId>
           <version>8.1.16.v20140903</version>
           <configuration>
               <scanIntervalSeconds>5</scanIntervalSeconds>
               <webApp>
                   <contextPath>/test</contextPath>
               </webApp>
            </configuration>
         </plugin>
      </plugins>
    ....
  </build>
  ....
</project>

配置说明:

  • configuration.scanIntervalSeconds 配置表示新代码的扫描时间间隔(秒),值 <= 0 表示不扫描

  • configuration.webApp.contextPath 配置表示工程的虚拟目录

 

jetty 运行时指定端口号    jetty:run -Djetty.port=9080

混合使用HTTP和HTTPS

pom.xml 里面的配置改为如下:

<project>
  ....
  <build>
    ....
      <plugins>
        <plugin>
           <groupId>org.mortbay.jetty</groupId>
           <artifactId>jetty-maven-plugin</artifactId>
           <version>8.1.16.v20140903</version>
           <configuration>
               <scanIntervalSeconds>5</scanIntervalSeconds>
               <webApp>
                   <contextPath>/test</contextPath>
               </webApp>
               <connectors>
                    <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                        <port>9080</port>
                    </connector>
                    <connector implementation="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
                        <port>9443</port>
                        <password>changeit</password>
                    </connector>
                </connectors>
            </configuration>
         </plugin>
      </plugins>
    ....
  </build>
  ....
</project>

说明,从配置中可以看出,添加了connectors配置,一个是http的配置,一个是https的配置。

connector.port 是端口号,这个端口号必须设置,且优先级比 -Djetty.port 高

connector.password 是 .keystore 的密码,https 连接必须设置,当前使用了 Tomcat 一样的密钥 changeit。

.keystore 文件的创建方法请查看上一篇博客 Eclipse下通过Maven的Tomcat插件运行Web工程的配置,包括启用https

以上配置完成后,运行,就可以通过 http 和 https 两种形式访问亲的网站了

 

补充

1: Jetty有一个问题,默认使用nio连接会把资源文件(html, css)锁定,解决方案是把nio改为bio:

	<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
				<port>9080</port>
			</connector>
			<connector  implementation="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
				<port>9443</port>
				<password>changeit</password>
			</connector>

			这两个connector的配置要改为:
			<connector implementation="org.eclipse.jetty.server.bio.SocketConnector">
				<port>8080</port>
			</connector>
			<connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
				<port>8443</port>
				<password>changeit</password>
			</connector>
2: 使用org.eclipse.jetty
<plugin>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-maven-plugin</artifactId>
   <version>9.3.0.M2</version>
   <configuration>
      <webAppConfig>
         <contextPath>/</contextPath>
      </webAppConfig>
      <httpConnector>
         <port>80</port>
         <idleTimeout>10000</idleTimeout>
      </httpConnector>
   </configuration>
</plugin>

 

方法二:运用ide 的Jetty插件直接部署

步骤一 :

1.下载jetty,楼主使用的jetty8,地址http://download.eclipse.org/jetty/

2.下载完成后,解压缩,cd到jetty路径下,运行命令: java -jar start.jar

3.默认端口号8080,访问http://localhost:8080,出现jetty welcome界面

到此,说明jetty已经安装成功!

步骤二: 

 

参考 :     https://my.oschina.net/cokolin/blog/409164

              https://www.cnblogs.com/yiwangzhibujian/p/5832597.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值