【说明】今天看了看jetty这个web容器,上午看基础理论框架知识(后面半点没用到),下午下载了jetty,并且在上面部署了一个war应用,晚上在做eclipses整合jetty的时候出现了问题,下载插件之后不能运行,随之又对jetty插件运行方式产生了疑问

一:今日完成

1)jetty的官方简单介绍

Jetty provides a Web server and javax.servlet container, plus support for HTTP/2, WebSocket, OSGi, JMX, JNDI, JAAS and many other integrations.These components are open source and available for commercial use and distribution.

Jetty is used in a wide variety of projects and products, both in development and production. Jetty can be easily embedded in devices, tools, frameworks, application servers, and clusters. See the Jetty Powered page for more uses of Jetty.

The current recommended version for use is Jetty 9 which can be obtained here: Jetty Downloads. Also available are the latest maintenance releases of Jetty 8 and Jetty 7.

The Jetty project has been hosted at the Eclipse Foundation since 2009. Prior releases of Jetty have existed in part or completely under the Jetty project at the The Codehaus and Sourceforge before that. See the About page for more information about the history of Jetty.

2)启动jetty

3)了解jetty_base和jetty_home的区别

4)部署test.war

5)安装插件

二:明日计划

1)搞定插件直接部署到jetty

2)搞定插件直接部署到tomcat

3)了解一下jboss和jetty的联系

三:疑难问题

1)eclipse里如果用jetty启动项目,是不是只能用jetty server adapter或run-jetty-run插件启动,不能用本地的jetty?那以后部署到生产环境怎么保证项目能在生产环境的jetty里运行呢?

2)maven的pom.xml里配置了jetty插件,有什么作用呢?开发环境可以用run-jetty-run启动,生产环境可以放到webapp里,这个jetty插件在什么时候用?

3)网上说在项目目录下用mvn jetty:run启动,如果是生产环境,还要安装maven?

4)执行这个启动命令mvn jetty:run,jetty是哪里来的?

<groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-maven-plugin</artifactId>
   <version>9.0.5.v20130815</version>

四:思考总结

上午看的jetty原理和框架知识现在半点用不上,还是等遇到了再详细研究吧

jetty9.1以后出现了jetty.base这个概念,指的就是你的webapps目录所在的路径(当然这个webapps目录也是可以修改的,但大多数应用都是直接用这个webapps了),分几种情况说明下:

1、下载下来的jetty直接使用,也就是将你的war文件直接放在解压目录的webapps下,然后通过java -jar start.jar启动,此时的jetty.base和jetty.home都是当前目录,可以通过java -jar start.jar --list-config来查看下:

2、看到那个demo-base文件夹了么(jetty版本为9.0以后),这个文件夹就是jetty用来做jetty.base的事例用的,进去看下,目录结构这样:

demo-base中包含可以启动一个web应用的所有文件.也就是说,使用这个目录中的文件也可以启动jetty,如何启动的,进入demo-base,然后java -jar ../start.jar进行启动,再次使用--list-config进行查看,只有很少的内容,且内容来源都是demo-base中,其中有jetty.base和jett.home,看到了吧,不一样了,jetty.base是当前目录:

也就是说,可以随意建立一个目录当做jetty.base,然后在该目录中放置war包启动需要的jetty配置文件即可.

3、在系统内任意目录建立一个文件夹,当做jetty.base使用(其实和第2种情况一样,启动时通过指定start.jar就可以启动了)

还有几个点需要注意下:

1、jetty.home默认就是start.jar所在的目录

2、可以通过在java -jar start.jar后面跟上jetty.base来指定jetty.base目录:

java -jar start.jar jetty.base=...

3、jetty.home其实就是jetty的默认配置文件、默认的模块定义目录;jetty.base就是为了某个webapp自定义的一个配置文件目录

--list-modules:此命令将返回当前服务所有可用的模块,同时也会显示本地的模块,信息包括模块实现的顺序,依赖模块以及相应的jar信息

--list-config:显示运行环境和配置文件等信息 

在Jetty9,只有Jetty基路径下的配置文件被编辑,属性才会被修改

1、web应用的结构:

在说jetty部署之前先说说servlet规范定义的web应用的结构,应该都很熟悉,这里罗列一下:

WEB-INF/

WEB-INF/lib/

WEB-INF/classes/

WEB-INF/web.xml

以上内容是一个webapp必须有的,其中在启动的时候jetty的WebAppClassLoader会先从classes中加载类文件,然后在去lib目录下加载类文件

2、部署方式

jetty支持多种部署方式,比如servlet规范中的满足以上内容条件的war包,jetty自己提供的xml部署描述符,或者直接就是一个满足servlet规范的文件夹(war包本来也是要解压的)

(1)简单部署,直接将war包或者解压的war目录放入jetty.home/webapps目录下,然后启动,jetty的部署扫描器会找到部署的内容,然后自动设置contextPath为该war包或war目录的名字即可完成部署,但要注意war的名字,当war的名字为root.war或者文件夹的名字为war的时候,contextPath就是root,在浏览器中访问的时候就不需要输入contextPath了,而直接访问根目录,比如http://localhost:8080/就可以访问到root.war这个应用了,当你的jetty只需要部署这一个应用,将其命名为root.war还是可以滴.

当你需要使war包的名字和contextPath不同,这时候怎么办呢?就是第二种方式:

(2)XML部署描述符,这种方式就是在webapps目录中不放除了xml文件描述符之外的任何war包或者war目录,jetty部署扫描器能自动加载到这个xml文件,然后通过xml文件中定义的WebAppContext实例中的war和contextPath属性来找到你的war包或者war目录,比如这样一个xml文件:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">

<Set name="contextPath">/mycontext</Set>

<Set name="war">/home/wilsonp/myapp/myapp.war</Set>

</Configure>

jetty会解析该xml文件,然后自动搜索到myapp.war文件,并定义其contextPath为/mycontext,启动之后就可以直接输入http://localhost:8080/mycontext/就能访问到应用了。

其中WebAppContext中还有其他的属性:

extractWAR:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">

<Set name="contextPath">/mycontext</Set>

<Set name="war">/home/wilsonp/myapp/myapp.war</Set>

<Set name="extractWAR">false</Set>

</Configure>

通过以上设置,可以在部署myapp.war的时候不用展开该war文件。

还记得在web.xml文件中可以设置应用初始化参数吧?其实也可以在这里进行设置,如下设置,

<Configure class="org.eclipse.jetty.webapp.WebAppContext">

<Set name="contextPath">/mycontext</Set>

<Set name="war">/home/wilsonp/myapp/myapp.war</Set>

<Set name="extractWAR">false</Set>

<Get name="ServletContext">

<Call name="setInitParameter">

<Arg>myapp.config</Arg>

<Arg>/home/wilsonp/myapp/config/app-config.xml</Arg>

</Call>

</Get>

</Configure>

可以在启动jetty的时候设置ServletContext参数,参数可以是一个xml文件,jetty会自动解析,但要注意一点,jetty在解析了部署描述符文件之后才会去解析web.xml,这时候如果web.xml中也有和app-config.xml中同名的参数的话会将其覆盖。

overrideDescriptor:

看如下配置:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">

<Set name="contextPath">/mycontext</Set>

<Set name="war">/home/wilsonp/myapp/myapp.war</Set>

<Set name="extractWAR">false</Set>

<Get name="ServletContext">

<Call name="setInitParameter">

<Arg>myapp.config</Arg>

<Arg>/home/wilsonp/myapp/config/app-config.xml</Arg>

</Call>

</Get>

<Set name="overrideDescriptor">/home/wilsonp/myapp/config/overlay-web.xml</Set>

</Configure>

jetty解析web.xml文件之后会解析overlay-web.xml文件,就是说,可以在这个文件中覆盖web.xml中的属性,或者增加一些额外的属性,免得web.xml文件被改来改去的,麻烦,有了这个属性就省事了.

jetty还可以配置jndi数据源,自己去看看吧!

(3)第二种方式是放置war包,其实可以放置满足servlet 规范的任意目录都可以

(4)还有最后一种就是在jetty9系列之jetty.home和jetty.base中说的jetty.base的方式

没了,我知道的就这几种方式,其实我一直使用的是第二种方式,简单方便,还容易修改

转载于:https://www.cnblogs.com/yishengyishiduaini321/p/6653552.html

jetty;linux 目录结构相关推荐

  1. 简述Linux目录结构和系统结构

    提到 GNU/Linux 系统的目录结构,不得不说一下FHS(Filesystem Hierarchy Standard,文件系统层次结构标准),正是这一标准的存在,详细的定义了类 Unix 操作系统 ...

  2. Linux目录结构和文件基本操作

    一.Linux目录结构 1.FHS(File System Hierarchy Standrad,文件系统层次结构标准) FHS定义了两层规范,第一层是/下面的各个目录应该要放什么文件数据,例如/et ...

  3. linux目录结构   各个目录文件作用

     linux 目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中 /bin:/usr/bin: 可执行二进制文 ...

  4. 每天一个linux命令(23):Linux 目录结构

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

  5. Linux目录结构和常用命令

    Linux目录结构和常用命令 一.Linux目录结构 Linux文件夹很多都是固定的,分门别类,要想快速弄清楚系统的架构,那么哪些目录里面装着哪些文件是干什么用的. 首先,回顾一下Linux系统下文件 ...

  6. Linux目录结构FHS

    Linux目录结构: 这下这个是看到比较全面的一个FHS(Filesystem Hierarchy Stand),收藏下,以备不时之需! / 根目录│├boot/ 启动文件.所有与系统启动有关的文件都 ...

  7. linux目录结构及常用命令

    linux目录结构 home, etc, usr/local, var是4个常用的目录 常用命令 ~代表主目录 假设你登陆的用户明为user ~ 就表示 /home/user

  8. linux闲话FHS标准下linux目录结构

    2019独角兽企业重金招聘Python工程师标准>>> 1.闲话         2011年10月24日收到了秒针的OfferLetter并决定加入之后,就开始认真学习linux.坦 ...

  9. 【Linux】Linux 目录结构

    博客已转移,请借一步说话 .http://www.daniubiji.cn/archives/492 初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的 ...

  10. linux目录结果说明,Linux目录结构及文件说明

    Linux中所有文件都是从(/)根开始的,下面是典型的Linux目录结构说明: /:根目录 /bin: binary 主要用来存放可执行文件 /sbin: super bin 存放系统管理程序,通常只 ...

最新文章

  1. linux fedora35安装Pantheon桌面环境命令整理
  2. SQL性能优化应该考虑哪些?
  3. 每天一道LeetCode-----计算字符串s中有多少个子序列和字符串t相等
  4. java 方法 示例_Java Collectionsfrequency()方法与示例
  5. [css] 举例说明在css3中怎么实现背景裁剪?
  6. C++编程笔记:贪心算法实现部分背包问题
  7. 使用Advanced Installer将.exe程序重新封装为.msi程序
  8. GNU 关闭 MMU 和 Icache 和 Dcache
  9. mac 版ideal 查找类_4款mac窗口切换工具 提高你的工作效率
  10. Linux之父道歉后,Linux社区颁布开发人员行为准则
  11. 【BZOJ4503】两个串(FFT)
  12. OpenJ_POJ C16B Robot Game 打表找规律
  13. 一张图片分成两张matlab,matlab – 两幅图像之间的相似度量
  14. MaskFlownet图
  15. stm8s + si4463 寄存器配置
  16. 计算机网络基础练习题(附解析,考前必备)
  17. python问题:IndentationError:expected an indented block错误
  18. 关于微信网页版WeChat不能正常登录的最佳解决方案
  19. java float 输出文本框_关于Java中float数输出时显示问题
  20. 编程与手绘的对比——静态篇

热门文章

  1. n卡eth挖矿设置_“挖矿”再度兴起,N卡停产遇到ETH大涨,显卡会不会涨到18年那样...
  2. swoole task MySQL连接池
  3. 【HTTPS运维神器】终于等到你!MySSL企业版重磅上线!
  4. Python基础-使用paramiko
  5. ubuntu下mongodb启动脚本
  6. Android ------ handler 异步处理消息
  7. 20个使用柔和的色调的优秀网站设计示例
  8. 关于使用Aptana+Pydev构建Python开发环境(Django)
  9. apache-tomcat集成,转帖
  10. php mysql搜索包含数据查询慢,php – 在mysql中搜索关键字并获取至少包含5个关键字的数据...