设为首页 收藏本站
查看: 1056|回复: 0

[经验分享] Jetty9开发(1)

[复制链接]

尚未签到

发表于 2017-3-2 07:02:55 | 显示全部楼层 |阅读模式
DSC0000.png

Version: 9.2.14.v20151106
Jetty : 开发文档





jetty的官网:http://www.eclipse.org/jetty/







Jetty : 开发文档




目录
I. jetty起步1。介绍jetty服务器Jetty是一个开源的项目,他提供的功能有:Http服务器,Http客户端和servlet容器。2.我应该使用什么版本的jetty服务器?到目前为止,jetty9是最新的版本,并且拥有比以前版本jetty很多很强大的功能,然而还有很多人仍然在使用更老版本的jetty服务器,我们郑重推荐你使用jetty9,因为他是jetty版本中的代表,并且官方目前活跃在jetty9,并且会为jetty9维护很多年。                                                                                                 jetty 版本的明细表:
VersionYearHomeJVMProtocolsServletJSPStatus

9.3
2014
Eclipse
1.7
HTTP/1.1, HTTP/2 RFC2616,javax.websocket, SPDY v3
3.1
2.3
Experimental


9.2
2014
Eclipse
1.7
HTTP/1.1 RFC2616,javax.websocket, SPDY v3
3.1
2.3
Stable


8
2009-
Eclipse/Codehaus
1.6
HTTP/1.1 RFC2616, WebSocket RFC 6455, SPDY v3
3.0
2.2
Mature


7
2008-
Eclipse/Codehaus
1.5
HTTP/1.1 RFC2616, WebSocket RFC 6455, SPDY v3
2.5
2.1
Mature


6
2006-2010
Codehaus
1.4-1.5
HTTP/1.1 RFC2616
2.5
2.0
Venerable


5
2003-2009
Sourceforge
1.2-1.5
HTTP/1.1 RFC2616
2.4
2.0
Deprecated


4
2001-2006
Sourceforge
1.2, J2ME
HTTP/1.1 RFC2616
2.3
1.2
Ancient


3
1999-2002
Sourceforge
1.2
HTTP/1.1 RFC2068
2.2
1.1
Fossilized


2
1998-2000
Mortbay
1.1
HTTP/1.0 RFC1945
2.1
1.0
Legendary


1
1995-1998
Mortbay
1.0
HTTP/1.0 RFC1945
-
-
Mythi

jetty作为Java EE规范的轻量级服务器,对其中的重要的servlet进行了实现,而在最近的javaee平台引入Web Profile,javaee官方其实也意识到了对于大部分开发者而言,只需要Java EE许多技术中一些。然而jetty并没有装载全部Web Profile技术,Jetty的架构被设计成你加入自己真正需要的功能的第三方实现包的一个容器。在第四版Java EE-7规范更新了一些已有功能,同时添加了一些新的功能:
JSRNameIncluded with jetty-9.1.xPluggable



JSR 340
Servlet Specification API 3.1
Yes



JSR 344
Java Server Faces 2.2 (JSF)
No
Yes, Mojarra or MyFaces


JSR 245 / JSR 341
Java Server Pages 2.3/Java Expression Language 3.0 (JSP/EL)
Yes
Yes


JSR 52
Java Standard Tag Library 1.2 (JSTL)
Yes
Yes


JSR 45
Debugging Support for Other Languages 1.0
Yes (via JSP)
Yes (via JSP)


JSR 346
Contexts and Dependency Injection for the JavaEE Platform 1.1 (Web Beans)
No
Yes, Weld


JSR 330
Dependency Injection for Java 1.0
No
Yes as part of a CDI implementation, Weld


JSR 316
Managed Beans 1.0
No
Yes, as part of another technology


JSR 345
Enterprise JavaBeans 3.2 Lite
No



JSR 338
Java Persistance 2.1 (JPA)
No
Yes, eg Hibernate


JSR 250
Common Annotations for the Java Platform 1.2
Yes
Partially (for non-core Servlet Spec annotations)


JSR 907
Java Transaction API 1.2 (JTA)
Yes
Yes


JSR 349
Bean Validation 1.1
No
Yes as part of another technology eg JSF, or a stand-alone implementation such as Hiberate Validator


JSR 339
Java API for RESTful Web Services 2.0 (JAX-RS)
No



JSR 356
Java API for Websocket 1.0
Yes
No


JSR 353
Java API for JSON Processing 1.0 (JSON-P)
No
Yes, eg JSON-P reference implementation


JSR 318
Interceptors 1.2
No
Yes as part of a CDI implementation

同时我也提供Java EE 6 Web Profile作为参考,毕竟Java EE 6目前使用最广泛。
JSRNameIncluded with jetty-9.0.xPluggable



JSR 315
Servlet Specification API 3.0
Yes



JSR 314
JavaServer Faces 2.0 (JSF)
No
Yes, for example, Mojarra or MyFaces


JSR 245
JavaServer Pages 2.2/Java Expression Language 2.2 (JSP/EL)
Yes
Yes


JSR 52
Java Standard Tag Library 1.2 (JSTL)
Yes
Yes


JSR 45
Debugging Support for Other Languages 1.0
Yes (via JSP)
Yes (via JSP)


JSR 299
Contexts and Dependency Injection for the Java EE Platform 1.0 (Web Beans)
No
Yes, Weld or OpenWebBeans


JSR 330
Dependency Injection for Java 1.0
No
Yes as part of a CDI implementation, Weld


JSR 316
Managed Beans 1.0
No
Yes, as part of another technology.


JSR 318
Enterprise JavaBeans 3.1
No
Yes, OpenEJB


JSR 317
Java Persistance 2.0 (JPA)
No
Yes, Hibernate


JSR 250
Common Annotations for the Java Platform
Yes
Partially (for non-core Servlet Spec annotations)


JSR 907
Java Transaction API (JTA)
Yes
Implementations are pluggable, such as Atomikos, JOTM, Jencks (Geronimo Transaction Manager)


JSR 303
Bean Validation 1.0
No
Yes as part of another technology (JSF), or a stand-alone implementation such as Hiberate Validator

你使用jetty服务器有很多不同的方式,在应用程序中内嵌jetty,也可以在不同的构建系统启动他,基于JVM虚拟机的不同语言的应用,或者作为一个单独的分发包部署web应用程序。下载jetty:独立的jetty分发包现在在Eclipse基金会的下载的有效连接:http://download.eclipse.org/jetty上面提供了zip和gzip格式的文件,下载适合你系统的文件。留意以扩展名.sha或者.md5结尾的文件是校验和文件。解压在你方便的目录下面,解压后的根目录作为JETTY_HOME 或者作为 $(jetty.home)分发包压缩包的内容目录:
LocationDescription

license-eplv10-aslv20.html
Jetty的License文件


README.txt
有用的开始信息


VERSION.txt
版本信息


bin/
存放帮助Jetty Unix系统上运行实用的shell脚本


demo-base/
Jetty的基本目录,用来运行在Jetty服务器示例应用程序


etc/
Jetty相关的XML配置文件目录文件


lib/
运行Jetty相关的jar包


logs/
请求日志的目录


modules/
模块的目录


notice.html
License信息


resources/
此目录需要加载到classpath下额外的资源(激活配置有效)


start.d/
存放ini文件的目录,存放有效的命令行参数(比如 start.ini)


start.ini
文件包含了参数信息


start.jar
启动jetty的可执行jar


webapps/
web应用程序的存放目录

启动 JettyJetty默认是在8080端口启动,运行一下命令:


cd 你的jetty解压缩的目录
java -jar start.jar

  然后在浏览器中输入http://localhost:8080进行访问。
  在Jetty 9.1之后,jetty分发包里面是不带任何示例的web应用程序,所以为了查看有趣的web示例应用程序,你应该在demo-base目录下面运行下面的命令:



> cd jetty解压缩文件夹/demo-base/
> java -jar ../start.jar

2016-02-24 13:56:35.939:WARN::main: demo test-realm is deployed. DO NOT USE IN PRODUCTION!
2016-02-24 13:56:35.943:INFO:oejs.Server:main: jetty-9-demo
2016-02-24 13:56:35.976:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/home/user/jetty-distribution-9/demo-base/webapps/] at interval 1
2016-02-24 13:56:36.240:INFO:oejpw.PlusConfiguration:main: No Transaction manager found - if your webapp requires one, please configure one.
2016-02-24 13:56:36.732:WARN::main: async-rest webapp is deployed. DO NOT USE IN PRODUCTION!
[...]
2016-02-24 13:56:38.572:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@2757052e{/,file:/home/user/jetty-distribution-9/demo-base/webapps/ROOT/,AVAILABLE}{/ROOT}
2016-02-24 13:56:38.579:INFO:oejs.ServerConnector:main: Started ServerConnector@19e0cb78{HTTP/1.1}{0.0.0.0:8080}

  同样在浏览器中输入http://localhost:8080进行访问,将会显示欢迎页面和几个demo/test的应用。

  提示:web示例应用程序并不提供必要的安全措施,请不要发布到生产环境中。
  创建一个新的Jetty Base
  在Jetty 9中demo-base目录就是一个基于jetty.base机制的例子,一个jetty.base允许配置文件和相关的服务器实例在jetty分发包中单独保存。以便用最小的损失升级。Jetty默认的配置基于两个相关的属性配置。
  1.jetty.home


  他配置的属性有jetty本地的分发包、默认的模块、默认的xml文件(典型的有 start.jar, lib, etc)

2.jetty.base  他配置的属性有本地Jetty定义的实例,配置,日志和web应用程序(典型的有 start.ini, start.d, logs and webapps)

  其中 jetty.home和jetty.base属性可以在命令行中进行配置,比如:

> cd $HOME/my-base
> java -jar $HOME/jetty-distribution-9/start.jar

  以下命令被用来创建新的基本目录和设置开启web访问、发布功能



> mkdir /tmp/mybase
> cd /tmp/mybase
> java -jar $HOME/jetty-distribution-9/start.jar
WARNING: Nothing to start, exiting ...
Usage: java -jar start.jar [options] [properties] [configs]
java -jar start.jar --help  # for more information
> java -jar $HOME/jetty-distribution-9/start.jar --add-to-startd=http,deploy
http            initialised in ${jetty.base}/start.d/http.ini (created)
server          initialised in ${jetty.base}/start.d/server.ini (created)
deploy          initialised in ${jetty.base}/start.d/deploy.ini (created)
MKDIR: ${jetty.base}/webapps
server          initialised in ${jetty.base}/start.d/server.ini
> java -jar $HOME/jetty-distribution-9/start.jar
2013-09-06 14:59:32.542:INFO:oejs.Server:main: jetty-9-demo
2013-09-06 14:59:32.572:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/tmp/mybase/webapps/] at interval 1
2013-09-06 14:59:32.602:INFO:oejs.ServerConnector:main: Started ServerConnector@405a2273{HTTP/1.1}{0.0.0.0:8080}

设置Jetty的访问端口
  在命令行中使用jetty.port命令进行设置jetty服务器的端口



1 > cd $HOME/jetty-distribution-9/demo-base
2 > java -jar ../start.jar jetty.port=8081
  另外,属性值可以在start.ini和start.d目录下的ini文件进行配置,而这里的端口配置则在start.d/http.ini中进行配置

进阶:
  配置属性有以下三种配置:




  • 在 start.d/http.ini文件中前提含有属性配置:--module=http并处于非注释状态。
  •   在modules/http.mod文件中指定http模块的配置路径为etc/jetty-http.xml并jetty-http.xml中进行了属性配置。

  •   jetty.port属性在etc/jetty.http.xml注入到ServerConnector 实例中。

  启用Https
  在jetty的配置中加入HTTPS的连接器,并使其生效,你需要:



> java -jar start.jar --add-to-startd=https
https           initialised in ${jetty.home}/start.d/https.ini (created)
ssl             initialised in ${jetty.home}/start.d/ssl.ini (created)
server          enabled in     ${jetty.home}/start.ini
resources       enabled in     ${jetty.home}/start.ini
ext             enabled in     ${jetty.home}/start.ini
> java -jar start.jar
2013-09-06 13:52:43.326:INFO:oejs.Server:main: jetty-9...
  如果--add-to-startd命令需要配置在ini文件中,需要以下做法 :




  •   在start.d中创建https.ini文件并使用其中https连接器模块,而https模块需要在etc/jetty-https.xml中加入激活。

  •   在start.d中创建ssl.ini文件并配置其中SSL的keystore使用演示密码,而ssl模块需要在etc/jetty-ssl.xml中加入激活。

  •   检测etc/keystore 文件是否存在,如果不存在该文件,jetty会去下载一个keystore 文件。

  提示:
  如果单个start.ini 文件优先start.d/*.ini文件,此时选项配置--add-to-start=module 可能就是在start.ini文件中加入而不是在start.d中另外创建一个ini文件。

更改jetty的Https的端口
  你可以配置SSL连接器使用https.port属性进行指定端口:



> cd $HOME/jetty-distribution-9/demo-base
> java -jar ../start.jar https.port=8444



  另外该属性值可以在 start.ini 文件和 start.d/*.ini 文件中进行配置. 如果你使用 --add-to-startd命令开启https, 然后你可以编辑该属性值在 start.d/https.ini文件中。 如果你指定-add-to-start命令, 你需要在 start.ini中进行配置。





更多关于start.jar命令
  start.ja的工作是解释这些命令参数的, start.ini和start.d在类路径下面并且配置信息和属性定义文件符合Jetty的Xml的配置机制,start.jar 的配置有很多选项已经被记录,你能够使用一下命令进行查看相关的语法:



> java -jar start.jar --help

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348963-1-1.html 上篇帖子: python 数据类型 下篇帖子: jetty9内嵌到应用,并在启动后加载WebApplicationInitializer,可运行jsp
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表