参考:https://www.jetbrains.com/idea/help/run-debug-configuration-jetty-server.html
背景:web开发当中,我觉得服务层的代码尽量用单元测试来测,这样可减少启动web容器测试,容器测试麻烦且费时.虽然很多数据测试没必要启动web容器来测试,即使使用了htmlunit也替代不了测试最终的web页面测试.所以想办法使web页面测试更简单是有必要的.

用惯了idea+maven+jetty的方式,觉得用jetty比tomcat要方便很多.对于不是多模块项目,使用jetty-maven-plugin是相当的方便,只在pom.xml配置一下这个插件,然后配置一下jetty:run就OK.

但对于多模块项目,如果修改的是依赖模块的类,就要在父项目install一下,再运行.install是比较费时的,也容易忘记.顺便提下为什么修改依赖模块的类要install.jetty:run虽然不以打包成war的方式运行,但运行前会去编译与解析子项目,当本地库有了子项目的jar依赖就不会报错,并且web加载的依赖是本地库jar包,而不是从依赖模块的编译目录加载类,所以修改了依赖模块的类,如果没有install更新到本地库,web的加载不是更新类.当然修改本web块的类还是没必要在父项目install,因为jetty:run不会打包本web模块的类成jar,而是从本web模块的编译目录来加载类.

发生问题关注点:安装好,运行的时候,有问题,则在解压包的目录下,在start.ini文件中添加“-module=jmx”的配置即可。

下面就介绍idea jetty插件的使用.
1.安装jetty.下载jetty的稳定版(下载地址http://www.eclipse.org/jetty/downloads.php),并解压到你想要安装的目录.要注意jetty9.3.xxxxx需要Java 8+,也就是说,如果你用Java7,就要下载jetty9.2.xxxxxx

2.安装idea的jetty插件.ctrl+alt+s打开设置.点左侧的Plugin-->在右边的搜索过滤输入jetty,查看一下jetty插件是否已安装,未有安装的就勾上-->点OK重启IDEA.

3.配置Jetty的默认配置.在主界面的右上面打开Edit Configurations...-->点左侧Defaults下的Jetty Server下的Local-->来到Server选项卡(图15111901)

点击Appication server右边的Configure...按钮选择刚才解压的jetty.After launch前面的勾可以去掉,没必要启动完为你自动打开某一URL,其它默认,然后点Apply即可.(配置过程可能提示你要激活JMX模块,按提示做就可以了)

4.为项目创建运行配置.点击左上角的加号-->Jetty Server-->Local,来到Server选项卡(图15111902),

4.1点Deployment选项卡,点右侧的加号选Artifacts,再选模块带有:war exploded(我当前的是web:war exploded)的选项.然后点击刚才加号下面的笔编辑当前的Artifact,跟着就会弹出如下界面(通过主界面右上角的项目配置也可以进入),(图15111903)

在此界面你可以修改Artifact,例如你可以使用依赖模块的输出目录替代依赖模块jar,在classes上右键-->Add Copy of-->Module Output-->选择要加入的模块,再展开lib-->删除相应jar就可以.
然后回到刚才的Deployment选项卡,勾上右侧的Use custom context root:,输入你想要的contextPath,再点Apply按钮.
4.2再点Server选项卡,如果需要配置热部署,就要配置On 'Update' action和On frame deactivation两个选项(未配置Deployment,可能不会出现On frame deactivation),On 'Update' action的几个选项在上面的链接有详细介绍.这里的On 'Update' action可理解为打开'更新'动作.
文档有介绍到,对于exploded artifacts(暴露构件,这就是我上面选带exploded的原因),如果选Update classes and resources的意思就是,更改的resources文件被更新时或者更改的Java类文件(例如EJBs, servlets,)被编译的时候,因为打开了更新动作,jetty就会重新加载达到热部署的目的.再来看看On frame deactivation(可理解为打开帧钝化),如果选了Do nothing,修改了类,热部署也失效,但选了Update classes and resources,就会每隔几秒时间,idea自动将更改过的类与源文件进行编译.
这里需要注意热部署的前提:
a.必须在调试模式下运行jetty;
b.On 'Update' action选Update classes and resources,On frame deactivation选Update classes and resource.

反正我是极少用热部署.

另:在IDEA,修改了java类不要以为按了ctrl+s就会进行编译,这是idea与eclipse一个很不同的地方,你按下ctrl+shift+f9就会主动编译该类,ctrl+f9会编译该工程,可以看看https://www.jetbrains.com/idea/help/eclipse.html#RunningReloadingChanges.

【idea】如何安装jetty容器,并使用。的更多相关文章

  1. MyEclipse 和 eclipse 最简单的安装Jetty容器插件

    一.MyEclipse安装jetty 1.下载jetty插件  http://pan.baidu.com/s/1nuMYGNv 2.将下载后的jetty插件放到安装MyEclipse目录的MyEcli ...

  2. Eclipse安装Jetty插件(Web容器)

    Eclipse除了安装Tomcat插件外,还可以安装Jetty,相对来说Jetty比Tomcat配置简单. Tomcat安装及配置:http://www.cnblogs.com/EasonJim/p/ ...

  3. Linux下安装jetty服务器

    jetty和我们通常使用的tomcat一样,是一个开源的servlet容器,特点是轻量易部署,一方面jetty可以作为web容器使用,另一方面也是最一般的方式是jetty以一组jar包的形式发布,所以 ...

  4. Linux 下安装jetty服务器

    jetty和我们通常使用的tomcat一样,是一个开源的servlet容器,特点是轻量易部署,一方面jetty可以作为web容器使用,另一方面也是最一般的方式是jetty以一组jar包的形式发布,所以 ...

  5. 在CentOS 7中安装Jetty服务器

    Jetty 是一款纯Java的HTTP (Web) 服务器和Java Servlet容器. 通常在更大的网络框架中,Jetty经常用于设备间的通信,而其他Web服务器通常给"人类" ...

  6. Jetty容器

    ♣Jetty和Tomcat的区别 ♣Jetty下载.安装 ♣eclipse安装jetty插件 ♣第一个jetty测试(maven+jetty) 1.Jetty和Tomcat的区别   Jetty 是一 ...

  7. SolrCloud7.4(Jetty容器)+mysql oracle 部署与应用

    SolrCloud7.4(Jetty容器)搭建 1.Zookeeper搭建 版本:zookeeper-3.4.10.tar.gz 1.把zookeeper安装包上传到服务器 2.zookeeper解压 ...

  8. 在 Ubuntu 14.10 Server 上安装 Jetty

    Jetty提供了一个Web服务器和javax.servlet容器,为SPDY.WebSocket.OSGi.JMX.JNDI.JAAS以及许多其它集成套件添加了支持.这些组件都是开源的,也可用于商业用 ...

  9. Docker的ubuntu镜像安装的容器无ifconfig和ping命令的解决

    Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令 解决: apt-get update apt install net-tools       # ifconfig apt ...

随机推荐

  1. bat笔记

    背景介绍 现入职的公司包含发送EDM的项目,每天都有各种题型邮件需要发送,但是由于各种原因,发送EDM程序的服务器老是被网管各种重启 :) 作为负责人,对这事很恼火,隔几天就被投诉,怎么又没收到考勤邮 ...

  2. ruby md5 sha1 base64加密

    #md5加密 require 'md5' puts MD5.hexdigest('admin') #sha1加密 require 'digest/sha1' puts Digest::SHA1.hex ...

  3. rails性能优化

    1,使用Unicorn或者Thin服务器替代默认的webrick.2,静态资源压缩合并,放到云存储上.3,同时可以使用rails的Turbolinks,使用js替换title和body,但也带来了js ...

  4. STRIDE 和 DREAD

    目录 STRIDE 和 DREAD 背景 STRIDE DREAD 注释 STRIDE 和 DREAD 背景 STRIDE 和 DREAD 是最常用也是最好用的安全模型 STRIDE 主要负责对安全风 ...

  5. JQuery实现锚点平滑滚动

    一般使用锚点来跳转到页面指定位置的时候,会生硬地立即跳转到指定位置,但是有些时候我们想要平滑地过渡到指定的位置,那么可以使用JQuery简单的实现这个效果: 比如,这里我们将通过点击<a> ...

  6. CentOS7.2 安装nginx-1.10.3

    nginx-1.10.3 下载nginx 检查是否安装了依赖库: [root@localhost ~]# rpm -q gcc gcc-4.8.5-11.el7.x86_64 [root@localh ...

  7. CF #505 B Weakened Common Divisor(数论)题解

    题意:给你n组,每组两个数字,要你给出一个数,要求这个是每一组其中一个数的因数(非1),给出任意满足的一个数,不存在则输出-1. 思路1:刚开始乱七八糟暴力了一下果断超时,然后想到了把每组两个数相乘, ...

  8. [参考]ASCII对照表 及 字符与二进制、十进制、16进制之间的转化(C/C++)

    第1节 ASCII码对照表 1.1 ASCII控制字符 1.2 ASCII可显示字符 第2节字符的进制转换 2.1 获取字符(8位)的上四位和下四位 2.2 获取字符(上表中的‘图形’)所对应的十六进 ...

  9. CNN中dropout层的理解

    dropout是在训练神经网络模型时,样本数据过少,防止过拟合而采用的trick.那它是怎么做到防止过拟合的呢? 首先,想象我们现在只训练一个特定的网络,当迭代次数增多的时候,可能出现网络对训练集拟合 ...

  10. Python学习札记(二十二) 函数式编程3 filter & SyntaxError: unexpected EOF while parsing

    参考: filter Problem SyntaxError: unexpected EOF while parsing 遇到该语法错误,一般是由于 括号不匹配 问题. Note 1.filter 用 ...