2019独角兽企业重金招聘Python工程师标准>>> hot3.png

jetty快速入门与嵌入使用 jetty
发表于: 2009年1月13日 | 分类: Server | 标签:  embed,  jetty |  views(41,589)

原文出处:http://blog.chenlb.com/2009/01/quick-start-jetty-and-embed-in-project.html

看到开源项目发布的时候都带一个 jsp 容器(jetty)。拿来做 demo、开发、调试的服务器还是很不错的。今天就小试下,主要把它运行起来。

第一步下载:http://dist.codehaus.org/jetty/jetty-6.1.14/jetty-6.1.14.zip 是目前最新的稳定版。解压到如E:\jetty-6.1.14,其中比较重要的目录是:etc、contexts、webapps。个人认为可以类比tomcat的conf、conf\Catalina\localhost、webapps目录。contexts是热部署用的。

试运行下,可以把一个简单的web项目到到webapps目录下,或是*.war,如:web-demo(或web-demo.war)放到webapps目录下。

E:\jetty-6.1.14>java -jar start.jar
2009-01-13 15:34:38.937::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
2009-01-13 15:34:39.265::INFO: jetty-6.1.14
2009-01-13 15:34:39.421::INFO: Deploy E:\jetty-6.1.14\contexts\javadoc.xml -> org.mortbay.jetty.handler.ContextHandler@15cda3f{/javadoc,file:/E:/jetty-6.1.14/javadoc/}
...
2009-01-13 15:35:01.828::INFO: Opened E:\jetty-6.1.14\logs\2009_01_13.request.log
2009-01-13 15:35:01.953::INFO: Started SelectChannelConnector@127.0.0.1 :8080

打开:http://localhost:8080/web-demo ,恩有结果了。

如果不把web-demo放到webapps目录下也可,在contexts目录下建立一个文件告诉jetty就行了。可以在contexts目录下复制test.xml为web-demo.xml,然后修改如下:

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
  3. <Configure class="org.mortbay.jetty.webapp.WebAppContext">
  4. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  5. <!-- Required minimal context configuration : -->
  6. <!-- + contextPath -->
  7. <!-- + war OR resourceBase -->
  8. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  9. <Set name="contextPath">/web-demo</Set>
  10. <Set name="war">e:/workspace/web-demo/WebContent</Set>
  11. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  12. <!-- Optional context configuration -->
  13. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  14. <Set name="extractWAR">false</Set>
  15. <Set name="copyWebDir">false</Set>
  16. <Set name="defaultsDescriptor">
  17. <SystemProperty name="jetty.home" default="." />/etc/webdefault.xml</Set>
  18. <!--
  19. <Set name="overrideDescriptor"><SystemProperty name="jetty.home"
  20. default="."/>/contexts/test.d/override-web.xml</Set>
  21. -->
  22. </Configure>

war可以设置成绝对路径。然后再重启jetty试试看。好了, 对jetty的初步认识到这里。

下面再来看下,怎么把它放到项目中。现我有一示例项目 e:/workspace/web-demo(称为project_home),里面的Web根目录是WebContent。

在project_home建一个jetty目录,子目录如:contexts、etc、lib。

把${jetty_home}/etc目录下的jetty.xml、webdefault.xml文件复制到${project_home}/jetty/etc目录中。

把${jetty_home}/lib/jsp-2.1目录复制到${project_home}/jetty/lib目录下(如果不复制jsp-2.1或jsp-2.0也可以正常启动,只是不能解析jsp,打开主页时提示 JSP not support)。

同样把jetty-6.1.14.jar、jetty-util-6.1.14.jar、servlet-api-2.5-6.1.14.jar复制到${project_home}/jetty/lib目录下。

把${jetty_home}/start.jar复制到${project_home}/jetty目录下。

接下来在${project_home}/jetty/contexts目录下加一个文件。可以是上面给出的web-demo.xml。不过war 可以改为

  1. <Set name="war"><SystemProperty name="jetty.home" default="."/>/../WebContent</Set>

注释${project_home}/jetty/etc/jetty.xml文件中的:

  1. <!--
  2. <Item>
  3. <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler" />
  4. </Item>
  5. -->
  6. <!--
  7. <Call name="addLifeCycle">
  8. <Arg>
  9. <New class="org.mortbay.jetty.deployer.WebAppDeployer">
  10. <Set name="contexts"><Ref id="Contexts" /></Set>
  11. <Set name="webAppDir"><SystemProperty name="jetty.home" default="." />/webapps</Set>
  12. <Set name="parentLoaderPriority">false</Set>
  13. <Set name="extract">true</Set>
  14. <Set name="allowDuplicates">false</Set>
  15. <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="." />/etc/webdefault.xml</Set>
  16. </New>
  17. </Arg>
  18. </Call>
  19. -->
  20. <!--
  21. <Item>
  22. <New class="org.mortbay.jetty.security.HashUserRealm">
  23. <Set name="name">Test Realm</Set>
  24. <Set name="config"><SystemProperty name="jetty.home" default="." />/etc/realm.properties</Set>
  25. <Set name="refreshInterval">0</Set>
  26. </New>
  27. </Item>
  28. -->
  29. <!--
  30. <Ref id="RequestLog">
  31. <Set name="requestLog">
  32. <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
  33. <Set name="filename"><SystemProperty name="jetty.logs" default="./logs" />/yyyy_mm_dd.request.log</Set>
  34. <Set name="filenameDateFormat">yyyy_MM_dd</Set>
  35. <Set name="retainDays">90</Set>
  36. <Set name="append">true</Set>
  37. <Set name="extended">false</Set>
  38. <Set name="logCookies">false</Set>
  39. <Set name="LogTimeZone">GMT</Set>
  40. </New>
  41. </Set>
  42. </Ref>
  43. -->

RequestLog 是访问记录,不注释也可,前提就是有logs目录。

addLifeCycle 不注释也行,前提是有webapps目录。

Test Realm 不注释也是,前提是etc目录下有realm.properties。

配置好了,现在到E:\workspace\web-demo\jetty,运行java -jar start.jar 可以启动这个项目了。

转载于:https://my.oschina.net/u/590484/blog/81939

jetty快速入门与嵌入使用 jetty相关推荐

  1. js 嵌入php_PHP快速入门第一讲:什么是PHP

    快速入门第一步:了解语言. 要学习先了解.下面我来介绍一下PHP语言.首先我们来看最官方的解释[www.php.net]:PHP("PHP: Hypertext Preprocessor&q ...

  2. jetty服务器上运行html页面,web项目嵌入Jetty运行的两种方式(Jetty插件和自制Jetty服务器)...

    自制Jetty服务类 这种方式可以支持websocket,如果项目中需要使用到可以试试这种. 首先pom.xml引入jetty的依赖: org.eclipse.jetty.aggregate jett ...

  3. Jetty入门(1-1)Jetty入门教程

    一.Jetty是什么? 1.Jetty 是一个Java语言编写的,开源的Servlet容器和应用服务器. Jetty 极度轻量级.高便携性.功能强大.灵活和扩展性好,而且支持各种技术如SPDY.Web ...

  4. 架构设计:系统间通信(36)——Apache Camel快速入门(上)

    1.本专题主旨 1-1.关于技术组件 在这个专题中,我们介绍了相当数量技术组件:Flume.Kafka.ActiveMQ.Rabbitmq.Zookeeper.Thrift .Netty.DUBBO等 ...

  5. Spring Boot 2 快速教程:WebFlux 快速入门(二)

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘 ...

  6. SpringBoot约定大于配置的特性解读 SpringBoot快速入门

    SpringBoot约定大于配置 Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系.随着Spring 3.0的 ...

  7. spring boot 快速入门

    文章来源:https://www.cnblogs.com/junyang/p/8151802.html spring boot入门 -- 介绍和第一个例子 "越来越多的企业选择使用sprin ...

  8. Spring MVC 教程,快速入门,深入分析

    目录  转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...

  9. 监控工具——Metrics 快速入门

    Metrics 快速入门 关于Metrics更多的内容可以查看 metrics-getting-started 代码地址 因为每个例子涉及代码较多,且包含测试用例,如果都贴到文章中内容过多,所以只贴出 ...

  10. 架构设计:系统间通信(39)——Apache Camel快速入门(下2)

    ======================== (接上文:<架构设计:系统间通信(38)--Apache Camel快速入门(下1)>) 4-2-1.LifecycleStrategy ...

最新文章

  1. 【BIEE】BI Publisher下拉菜单设置
  2. 【CentOS Linux 7】实验7【FTP服务器配置管理】
  3. 河北计算机科学与技术研究生,2021年河北工业大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
  4. (一)git简介及安装
  5. 贪心算法之用优先队列解决最短路径问题(Dijkstra算法)
  6. mysql 远程连接取消权限_MYSQL远程登录权限设置
  7. 搜索dwr做即时聊天的时候看到的问题
  8. 深入 Composer autoload
  9. 史上最全的常用iOS的第三方框架
  10. QQ游戏可以进房间,但上不了桌,无法入坐的一次解决经历
  11. 通讯录管理系统(C语言版)
  12. 地图原点半径距离经纬度计算
  13. php失物招领回复源码,失物招领系统 (1) - WEB源码|源代码 - 源码中国
  14. 在linux终端下使用scp与远程windows传输文件
  15. C语言点歌台歌曲信息管理
  16. QT pri 文件的作用
  17. Go的宕机与宕机恢复
  18. Qt学习 第21节:窗口初始化EVENT
  19. iOS 16测试版目前已知问题和Bug汇总
  20. 李飞飞论战《未来简史》作者赫拉利!2019 年最精彩 AI 论战

热门文章

  1. 最简单的基于FFmpeg的视频编码器-更新版(YUV编码为MP4)
  2. Linux虚拟文件系统(内核初始化二)
  3. Dos系统功能调用表9号功能
  4. HDU 1010 -Tempter of the Bone(深度搜索)
  5. java.lang.Exception: Test class should have exactly one public constructor
  6. 使用消息队列的十大理由
  7. python 爬取实时数据django显示_python脚本采集服务器数据通过API提交到django web服务器,然后展示在页面上...
  8. 安装i3_千元打造完美黑群晖——i3-8100,ITX蜗牛小机箱,显示CPU,支持Nvme缓存(硬件篇)...
  9. android fragment 底部菜单栏,安卓开发-底部导航栏切换Fragment进行显示
  10. linux内核循环,循环缓冲区(参考linux内核Kfifo)