Jetty提供了众多的参数和配置来保证满足不同场景下的启动方式。

除了极大方便嵌入式启动之外,从程序外部也非常好容易启动jetty。

[原文:http://www.blogjava.net/xylz/archive/2012/03/28/372923.html]

运行方式

运行方法1

首先我们以一个标准的jar程序启动来看待这个问题.

[adyliu@adyliu-pc jetty8]$cat run.sh

#!/bin/bash

JETTY_CLASSPATH="./start.jar"

for f in `find ./lib -name "*.jar"`

do

JETTY_CLASSPATH=$JETTY_CLASSPATH:$f

done

#echo $JETTY_CLASSPATHjava -cp $JETTY_CLASSPATH $*

然后运行查看下

[adyliu@adyliu-pc jetty8]$sh run.sh org.eclipse.jetty.start.Main2012-03-28 16:00:57.532:INFO:oejs.Server:jetty-8.1.2.v20120308

2012-03-28 16:00:57.578:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080

由于没有任何web环境,因此此时访问任何地址应该都是404。测试一下:

[adyliu@adyliu-pc jetty8]$curl -v http://127.0.0.1:8080* About to connect() to 127.0.0.1 port 8080

*   Trying 127.0.0.1

 connected

* Connected to 127.0.0.1 (127.0.0.1) port 8080

> GET / HTTP/1.1

> User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5

> Host: 127.0.0.1:8080

> Accept: */*

>

Error 404 - Not Found

Error 404 - Not Found.

运行方法2

另外上述运行等价于:

[adyliu@adyliu-pc jetty8]$sh run.sh org.eclipse.jetty.xml.XmlConfiguration etc/jetty.xml2012-03-28 16:31:16.481:INFO:oejs.Server:jetty-8.1.2.v20120308

2012-03-28 16:31:16.518:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080

运行方法3

第三种方法就是使用封装好的start.jar,这个jar包封装了一些常规的配置。

在开始之前,我们先重命名下默认的start.ini,因为默认的配置文件会启动一个test.war环境。

mv start.ini start.ini.default

[adyliu@adyliu-pc jetty8]$java -jar start.jar2012-03-28 16:35:21.941:INFO:oejs.Server:jetty-8.1.2.v20120308

2012-03-28 16:35:21.992:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080

可以看出这个方式和第一种、第二种完全相同。

另外start.jar提供了一种可以查看当前运行参数的命令:

java -jar start.jar --dry-run

可能输出:

/opt/apps/jdk/bin/java -Djetty.home=/opt/apps/jetty8 -cp /opt/apps/jetty8/resources:\

/opt/apps/jetty8/lib/jetty-xml-8.1.2.v20120308.jar:/opt/apps/jetty8/lib/servlet-api-3.0.jar:\

/opt/apps/jetty8/lib/jetty-http-8.1.2.v20120308.jar:/opt/apps/jetty8/lib/jetty-continuation-8.1.2.v20120308.jar:\

/opt/apps/jetty8/lib/jetty-server-8.1.2.v20120308.jar:/opt/apps/jetty8/lib/jetty-security-8.1.2.v20120308.jar:\

/opt/apps/jetty8/lib/jetty-servlet-8.1.2.v20120308.jar:/opt/apps/jetty8/lib/jetty-webapp-8.1.2.v20120308.jar:\

/opt/apps/jetty8/lib/jetty-deploy-8.1.2.v20120308.jar:/opt/apps/jetty8/lib/jetty-servlets-8.1.2.v20120308.jar:\

/opt/apps/jetty8/lib/jetty-util-8.1.2.v20120308.jar:/opt/apps/jetty8/lib/jetty-io-8.1.2.v20120308.jar \

org.eclipse.jetty.xml.XmlConfiguration /tmp/start1059041541723976621.properties /opt/apps/jetty8/etc/jetty.xml

有意思的是这里有一个临时文件:/tmp/start1059041541723976621.properties,里面记录了所有系统属性,也就是类似System.getProperties()。

除非是嵌入式开发,否则我们都是用start.jar来启动jetty。

命令参数

start.jar提供了大量的参数来负责启动JVM。

下面命令列出所有的命令行参数:

java -jar start.jar --help

现在问题来了,这些默认的参数都是哪来的?例如,如果想改变${jetty.home}又怎样?

jetty内部默认提供了一个默认的配置文件start.config来解决此问题。

默认情况下start.jar里面带有一个默认的start.config文件,这个文件有一些预置的定义。

[adyliu@adyliu-pc jetty8]$ jar tvf start.jar | grep start.config

8669 Fri Mar 09 00:13:12 CST 2012 org/eclipse/jetty/start/start.config

start.config 文件内容非常大,其中大部分是注释。

start.config的作用有以下几个:

定义jetty.home属性

定义jetty启动类

定义jetty启动的默认配置文件

定义OPTIONS

根据OPTIONS来定义classpath

上面特别提到OPTIONS。什么是OPTIONS?

OPTIONS

由于jetty是高度可定制的,因此jetty将各个模块拆分成各个非常细小的模块。每一个模块(实际上是一个个的jar包),我们可以简单的看出是一个OPTION。而每一个OPTION都会对应于实际的jar,这就决定了这些jar包是否需要加入classpath,并且在jetty启动的时候是否需要做一些额外的事情。

start.config文件的语法也挺有意思的。支持一些简单的逻辑判断,例如文件是否存在、命令行参数是否存在等。

默认情况下有如下配置:

path参数的值加入classpath

lib参数的值作为目录搜索jar包,其中的jar/zip包加入classpath

默认的启动类是org.eclipse.jetty.xml.XmlConfiguration.class,除非定义了start.class属性

默认的jetty配置文件是$(jetty.home)/etc/jetty.xml,除非传入的参数不为空

默认${jetty.home}目录是当前目录(不一定是start.jar所在路径)。${jetty.home}属性搜索顺序有:

$(jetty.home) 参数或者系统属性(包括环境变量)

. 当前路径

.. 当前路径的父路径

jetty-distribution/src/main/resources 当前路径的发行版子路径

../jetty-distribution/src/main/resources 当前路径的父路径的发行版子路径

默认的classpath有:

resources

lib/jetty-xml-8.1.2.v20120308.jar

lib/servlet-api-3.0.jar

lib/jetty-http-8.1.2.v20120308.jar

lib/jetty-continuation-8.1.2.v20120308.jar

lib/jetty-server-8.1.2.v20120308.jar

lib/jetty-security-8.1.2.v20120308.jar

lib/jetty-servlet-8.1.2.v20120308.jar

lib/jetty-webapp-8.1.2.v20120308.jar

lib/jetty-deploy-8.1.2.v20120308.jar

lib/jetty-servlets-8.1.2.v20120308.jar

lib/jetty-util-8.1.2.v20120308.jar

lib/jetty-io-8.1.2.v20120308.jar

start.jar参数

我们再来看start.jar支持的参数:

[adyliu@adyliu-pc jetty8]#java -jar start.jar --helpUsage: java -jar start.jar [options

] [properties

] [configs

]

options

其中options列表(这指的是命令行参数,不是模块,由此可见jetty将内置的OPTIONS定义为模块多好)有:

--version 列出版本号

--list-options 列出当前start.config支持的所有OPTIONS

--list-config 列出当前start.config内容(文本内容)

--dry-run 列出当前配置要启动的java进程完整参数(不启动jetty服务)

--exec 启动子进程(只有启动子进程才能修改-X,-D等参数,因为start.jar本身就是依靠java进程启动的,不能在运行时改变)

--stop 停止运行的jetty实例

--daemon 后台运行jetty,启动将stdout/stderr记录到${jetty.log}/start.log中(好了,这个变量jetty.log没有默认配置说明,估计是${jetty.home}/logs目录)

--config= 指定特别的start.config,以便覆盖内置的start.config.(经过测试,如果指定此文件,那么内置的配置将不再读取,这导致必须将所有配置写全,包括mainclass/jetty config/OPTIONS等)

--ini= 从配置文件中装载命令行参数。上面参数以及下面提到的参数是在太多,可以从配置文件中一次性加载,默认的配置文件是${jetty.home}/start.ini。

--pre= 指定特别的jetty运行配置文件,这个配置文件在后面提高的配置文件前面运行,相当于改变默认的装载机制。

properties

属性分成两种,一种是会传递给系统属性(java.lang.System#getProperty(String)),一种只是作为jetty的启动参数。

如果要传递给系统属性,则格式是: -Dname=value,和java进程系统属性类似。

jetty也有一些默认的系统属性:

属性类型描述

org.eclipse.jetty.util.log.class

class

jetty日志记录,默认为:org.eclipse.jetty.util.log.Slf4jLog

org.eclipse.jetty.util.log.DEBUG

boolean

调试日志输出地方,默认为stderr和java内置的Logger,如果是其他日志则需要设置为true,默认为false

org.eclipse.jetty.util.log.IGNORED

boolean

是否记录一些忽略的错误日志,默认为false

org.eclipse.jetty.util.log.SOURCE

boolean

记录错误日志行号?位置?默认为false

com.sun.management.jmxremote

启动jmx管理

jetty的启动参数属性,格式是: name=value,注意这里没有-D了。这些参数不会传递给系统属性。

所有参数列表:

path=[directory]: 传递额外的classpath,参考上面默认的start.config配置

lib=[directory]: 传递额外classpath搜索jar/zip的目录

STOP.PORT=[number]: 停止jetty的端口(远程管理)

STOP.KEY=[alphanumeric]: 停止jetty的密码(远程管理)

DEBUG=true: 是否启动调试模式,同时会设置org.eclipse.jetty.util.log.DEBUG属性为true,默认为false

OPTIONS=[option,option...]: OPTION列表,也就是要启动的模块列表。

在内置的start.config中默认的OPTIONS列表有:

All

Client

Server

ajp

annotations

client

default

deploy

ext

jmx

jndi

jsp

jta

monitor

overlay

overlays

plus

policy

resources

rewrite

security

server

servlet

servlets

setuid

webapp

websocket

xml

configs

jetty运行需要一些配置文件,这些配置文件对应于不同的OPTION所需要的配置。

默认的jetty配置存在都存在于${jetty.home}/etc中,所有配置文件列表有:

etc/jetty-ajp.xml

etc/jetty-annotations.xml

etc/jetty-bio-ssl.xml

etc/jetty-bio.xml

etc/jetty-contexts.xml

etc/jetty-debug.xml

etc/jetty-deploy.xml

etc/jetty-fileserver.xml

etc/jetty-ipaccess.xml

etc/jetty-jmx.xml

etc/jetty-logging.xml

etc/jetty-monitor.xml

etc/jetty-overlay.xml

etc/jetty-plus.xml

etc/jetty-policy.xml

etc/jetty-proxy.xml

etc/jetty-requestlog.xml

etc/jetty-rewrite.xml

etc/jetty-ssl.xml

etc/jetty-stats.xml

etc/jetty-testrealm.xml

etc/jetty-webapps.xml

etc/jetty-xinetd.xml

etc/jetty.xml

这么多配置,如何记得住?该使用哪些配置?

下一个章节中介绍配置文件。

参考资源:

©2009-2014 IMXYLZ求贤若渴

java jetty启动_[深入浅出Jetty 04]Jetty的启动方式相关推荐

  1. roszhong指定rviz的点启动_怎样在1秒内启动 Linux

    欢迎关注我的头条号:Wooola,专注于Java.Golang.微服务架构,致力于每天分享原创文章.快乐编码和开源技术. 背景知识 系统从上电到完全启动,需要经过许多过程.一个简化的启动流程大概包含: ...

  2. linux下修复windows7启动项,Ubuntu 14.04.02 LTS 启动项误写入 /dev/sda1 (win 7 loader) 修复...

    问题描述: 在Win7下安装Ubuntu 14.04,由于启动项 /boot loader 安装位置错误(/dev/sda1 (win 7 loader) )导致无法进入Windows(在GRUB界面 ...

  3. 360 mysql无法启动_安装MySQL 5后无法启动(不能Start service)解决方法小结

    转自:http://www.jb51.net/article/33375.htm 创建primay key过程中发生了断电,当电脑再次启动时候,发现mysql 服务无法启动,使用 net start ...

  4. 法那科机器人初始化启动_发那科机器人的控制方式和控制柜的启动方式

    工业机器人能得到广泛应用,得益于它拥有有多种控制方式,按作业任务的不同,可主要分为点位控制方式.连续轨迹控制方式.力(力矩)控制方式和智能控制方式四种控制方式. 1.点位控制方式(PTP) 这种控制方 ...

  5. win10关闭快速启动_注意:win10系统快速启动功能虽然好用,但也会带来一些麻烦...

    快速启动是首先在Windows 8中实现并延续到Windows 10的功能,可在启动电脑时提供更快的启动时间.这是一个很方便的功能,也是大多数人在不知情的情况下使用的功能,但有一些高手会禁用它,为什么 ...

  6. 计算机的硬盘 u盘启动,【电脑bios设置硬盘启动】电脑bios设置光驱启动_电脑bios设置u盘启动...

    2017-11-14 17:02:44 浏览量:94932 怎么在BIOS里设置硬盘启动?电脑在启动时会从硬盘寻找引导文件,从而启动系统,如果硬盘不是第一启动项,或者有两个硬盘,就会导致系统无法启动, ...

  7. 海尔台式计算机配置,海尔台式机电脑怎么设置u盘启动_海尔电脑如何设置usb启动...

    有不少海尔台式机电脑想要用U盘重装电脑,那么就需要设置U盘启动,但是很多用户并不知道要怎么设置U盘启动,我们可以通过bios来操作,接下来给大家分享一下海尔电脑设置usb启动的详细步骤如下. 准备工具 ...

  8. 没有体现JAVA接口功能_深入浅出分析Java抽象类和接口【功能,定义,用法,区别】...

    本文实例讲述了Java抽象类和接口.分享给大家供大家参考,具体如下: 对于OOP编程来说,抽象是它一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:抽象类和接口. 这两者有相似之处也有很 ...

  9. 杀戮尖塔java启动_萌新with mods无法启动求救

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 不清楚是不是报错文件,不过还是发出来给大佬看看 Searching for Workshop items... Using local StS JRE s ...

最新文章

  1. chrome谷歌浏览器用这种方式清除缓存比较方便了,必须是调试模式才行
  2. Houdini FX 14 重磅推出!(附下载方式)
  3. 量子力学 一 基础7 酉算符与Hausdorff-Campbell公式
  4. java B2B2C springmvc mybatis仿淘宝电子商城系统(十)用spring Restdocs创建API文档
  5. [设计模式]桥接模式
  6. 深入ASP.NET MVC之七:ActionResult的执行(View的加载和渲染)
  7. 详述MySQL事务的实现原理
  8. 02-虚拟机克隆配置
  9. 【事件驱动】【蓝牙控制车锁或电灯】初步方案
  10. linux shell 获取系统当前时间 毫秒
  11. java urlconnection cookie_使用HTTPUrlConnection时如何保留cookie?
  12. 每周分享第 34 期
  13. MT4API跟单、外汇API跟单接口详解
  14. 在本地计算机无法启动iis,IIS常见错误及解决方法
  15. 黑苹果alc269声卡仿冒id_笔记本制作仿冒声卡驱动AppleHDA最详细教程
  16. 灰灰考研c语言讲义,【灰灰考研】操作系统复习全书.pdf
  17. 2023年全国最新二级建造师精选真题及答案62
  18. 互联网巨头前沿科技产品一览
  19. 高斯白噪声的统计特性
  20. Android 轻松实现百度地图定位

热门文章

  1. [PPT] IC芯片验证-手把手教你搭建UVM环境
  2. 工业互联网:2 设备端(3)
  3. 自学考试之概率论与数理统计知识框架
  4. WordPress Rest API 最细接口详解
  5. win10查看笔记本电池健康度
  6. 外贸必备技能,如何正确使用国际短信及语音
  7. 阿诺德Arnold渲染器 (R20-2023版本合集)
  8. GSMA携手CTIA推出2018世界移动大会-美洲
  9. IPV4、IPV6地址正则HTA测试工具
  10. IM1281B单相交流计量模块使用讲解