java返回jetty根目录_jetty:使用详解(一)

目录

下载

百度一下,jetty,自己去下载去。

目录结构

bin

linux环境下启动。要求配置当前文件夹为JETTY_HOME等环境变量

demo-base

jetty官方给出的一些demo。

etc

配置文件

lib

依赖包

logs

日志

modules

模块配置

resources

资源文件

webapps

应用

start.ini

启动配置

start.jar

启动工具

测试

cmd  cd到当前目录

java -jar start.jar

将会看到如下情景。

可以看到8080端口启动了。(CTRL+C关闭jetty)

我们打开localhost:8080即可看到有服务在挂起。但是服务返回404。

为什么404?

因为webapps下面是空的。什么都没有。如果你在webapps下面新建一个ROOT文件夹,里面放个index.html就可以显示到。实际上你把war包或者应用文件夹放到这里面就可以正常启动应用了。

和tomcat根目录的区别

新的tomcat的webapps下面有ROOT,manager,host,docs等资源夹,都是官方给的demo.而jetty根目录确是什么都没有。难道真的没有吗?不是的。jetty的官方demo在demo-base文件夹里。

怎么运行demo-base里的demo?

打开%JETTY_HOME%/start.ini,第一段话就是这个

#===========================================================

# Jetty Startup

#

# Starting Jetty from this {jetty.home} is not recommended.

#

# A proper {jetty.base} directory should be configured, instead

# of making changes to this {jetty.home} directory.

#

# See documentation about {jetty.base} at

# http://www.eclipse.org/jetty/documentation/current/startup.html

#

# A demo-base directory has been provided as an example of

# this sort of setup.

#

# $ cd demo-base

# $ java -jar ../start.jar

#

#===========================================================

这里的最后两句就是到demo-base文件夹里,然后运行java -jar ../start.jar

我们先试一下。

此时控制台上发现启动了很多东西。不再是简单一点。

甚至不仅启动了8080端口,还启动了SSL的8443端口。

打开localhost:8080,你将看到以下网站。

Welcome to Jetty 9!

成功!已经进到官方demo了!

但是很懵逼。我们的%JETTY_HOME%/webapps目录下什么玩意都没有,怎么能进到这个网站?

原因在于demo-base下除了没有start.jar,实际上就是一个jetty的缩小版。我们的jetty没有启动加载%JETTY_HOME%这里的配置,而是加载了其他demo_base里的配置,包括项目。

那么我们可以举一反三。我们把demo_base剪切到桌面上,脱离出%JETTY_HOME%。然后在里面打开cmd执行start.jar,会不会也能启动啊?

你们可以试一试,我试了,是可以启动的。

这一点也可说非常重要。

推测start.jar会加载当前目录的配置并部署当前目录下webapps的应用。

配置80端口。

默认是8080端口,实际上我想要80端口,在tomcat里是配置server.xml。在jetty里呢?

有很多方法。最简单直接的是修改start.ini,在最后一段话里。

--module=http

### HTTP Connector Configuration

## Connector host/address to bind to

# jetty.http.host=0.0.0.0

## Connector port to listen on

# jetty.http.port=8080

把注释放开,改成80即可。

你也可以修改其他地方。都有哪些地方?

我先带你一步一步去寻找为什么默认是8080。

首先看上面那段start.ini。第一句话:

--module=http

意思就是加载了http的模块。

从头开始:

>>>>>>jetty启动

>>>>>>port = null,未赋值

>>>>>>读取start.ini.发现端口配置时被注释掉的。

>>>>>>port = null,无法赋值

>>>>>>jetty 加载了http模块

我们再去看看http模块,在%JETTY_HOME%/models/http.mod,用记事本打开。

[depend]

server

[xml]

etc/jetty-http.xml

[ini-template]

### HTTP Connector Configuration

## Connector host/address to bind to

# jetty.http.host=0.0.0.0

## Connector port to listen on

# jetty.http.port=8080

>>>>>>读取http.mod.发现端口配置时被注释掉的。

>>>>>>port = null,无法赋值

但是http模块又依赖server模块,我们再打开server.mod

发现里面没有什么和端口有关。

再回到http模块。

发现又加载了一个叫做etc/jetty-http.xml。我们打开他可以看到

非常棒,就在这里。

在这里意思很像spring的依赖注入,大约是获取jetty.http.port的值然后set到xxx对象里面。如果没有的话,采用默认值。

>>>>>>port = null,将采用默认值

>>>>>>port = 8080

以上就是在文件之后你可以修改端口的地方。可以修改start.ini,可以修改http.mod,也可以修改这个default。

实际上除了修改文件,你在启动的时候也可以设置端口

这样启动:

java -jar start.jar jetty.http.port=80

相当于命令阶段就设置了port=80.那么自然不会用到default的值了。

作为一个http服务器该如何使用?

jetty的好处有两个,一个是模块化可插拔。

不像tomcat一样一股脑什么都给加进去。

就像我们不需要websocket一样,可以在start.ini里把--module=websocket给注释掉。我们只用我们所需要的。

事实上,在使用过程中,我们不要修改%JETTY_HOME%里的配置,而是像官方给的demo一样,自己另起一个,需要什么复制什么,在自己起的那个目录里启动jetty.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值