Jetty9 使用

Jetty9 使用,第1张

Jetty比较简单,和Tomcat大致相同,本文主要描述jetty9以上版本的使用,jetty9版本对芹数尺jetty的目录结构和使用都有了一些明显的改动。

Jetty较于Tomcat属于轻量级,而且在毕裂处理高并发细粒度请求的场景下显得更快速高效。所以使其也拥有众多使用场景,合适的选择应该为:云平台本身的门户网站放在Tomcat内,而云台托管的Java Web应该是部署在Jetty内的。

bin目录是存放在Unix系统下运行的shell脚本的;

etc存放的都是jetty的配置文件

modules是存放着各个模块的,以.mod结尾,点进去可以看到有众多模块,不过大多数是没有激活的,像logs,webapps这种模块就是默认激活的。

webapps和Tomcat一样,用于存放项目的;

可以看到截图中是有个work目录的,正常情况下,解压jetty是没有这个目录的,因为当在webapps中存放项目时,通过在根目录下面运行java -jar start.jar命令,启动jetty,由于jetty本身所在的目录和运行的项目的路径是分开的,这方便于丹jetty升级的时候,并不影响运行的项目,所以例如在webapps下放置一个war包,运行jetty,该war包解压出来的项目是存在于系统的temp的目录下面的,在jetty的目录中并不能找到,不过当创建一个work文件夹的时候,解压出来的项目就会默认的存放在work文件夹内了。

里面的配置文件编写为:

这是最基础的配置,同tomcat的server.xml类似,不过jetty可以配置更多。

默认情况下,jetty会对根目录(也可以配置jetty.base)下webapps/目录下的内容实现自动部署,部署的规则如下:

隐藏文件(.开头)和.d结尾的目录被忽略;

CVS目录如”CVS”和”CVSROOT”被忽略;

任何war包都会被自动部署;

任何xml描述文件被认为是可部署的;

任何目录都被认为是可部署的;

同名的war包和目录同时存在,目录不被部署,仅war包部署,且认为war包引用该目录;

同名的war包和xml文件同时存在,war包不被部署,仅xml文件描述符被部署,且认为该xml文件引用该war包;

同名的目录和xml文件同时存在,目录不被部署,xml文件被部署,且认为xml文件引用该目录;

关于更详细的说明嫌高,请参考官方文档的这里。我主要提醒的是:在webapps目录中,如果存在同名的目录、war包和xml文件,它们会被当做同一个工程,部署的优先级是xml文件>war包>目录。一定要注意同名,如果不同名,在webapps下存在一个war包,同时存在一个引用该war包的xml文件,则会导致重复部署,这就是我跳的坑。

部署时,推荐的做法是,将xml描述文件放到自动部署的webapps目录下,里面定义war包的路径、上下文路径、是否解压、临时目录、日志文件等,然后将war包放在自定义的固定目录下,项目更新,只需要备份和替换war包,重启jetty即可。

以上转自: https://blog.csdn.net/weixin_38978094/article/details/87917711

demo-base目录为单独项目的一个实例,该目录就是运行某个项目的jetty_base,其可以在服务器的任何位置。

目录结构:

修改访问的context-path在webapps对应的xml中,修改端口号在start.d/http.ini中。

启动该项目:java -jar ${JETTY_HOME}/start.jar

启动时候也可以指定jetty_base:java -jar ${JETTY_HOME}/start.jar jetty.base=...

jstack用于打印出给定的java进程ID或corefile或远程调试服务的Java堆栈信息。郑喊如果是在64位历耐机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack[-l]pid如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的javastack和nativestack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的javastack和nativestack的信息,如果现在运行的java程序呈现hung的状态,jstack是非常有用的。需要注意的问题:l不同的JAVA虚机的线程DUMP的创建方法和文件格式是不一样的,不同的JVM版本,dump信息也有差别。l在实际运行中,往往一次dump的信息,还不足以确认问题。建议产生三次dump信息,如果每次dump都指向同一个问题,我们才确定问题的典型性。2、命令格式$jstack[option]pid$jstack[option]executablecore$jstack[option][server-id@]remote-hostname-or-IP参数说明:pid:java应用程序的进程号,一般可以通过jps来获得executable:产生coredump的java可执行程序core:打印出的core文件remote-hostname-or-ip:远程debug服务器的名称或IPserver-id:唯一id,假如一台主机上多个远程debug服务示例:$jstack–l23561线程分析:一般情况下,通过jstack输出的线程信息主要包括:jvm自身线程、用户线程等。其中jvm线程会在jvm启动时就会存在。对于用户线程则是在用户访问时才会生成。ljvm线程:在线程中,有一些JVM内部的后台线程,来执行譬如垃圾回收,或者低内存的检测等等任务,这些线程往往在JVM初始化的时候就存在,如下所示:1"AttachListener"daemonprio=10tid=0x0000000052fb8000nid=0xb8fwaitingoncondition[0x0000000000000000]23java.lang.Thread.State:RUNNABLE4567Lockedownablesynchronizers:89-None1011destroyJavaVM"prio=10tid=0x00002aaac1225800nid=0x7208waitingoncondition[0x0000000000000000]1213java.lang.Thread.State:RUNNABLE14151617Lockedownablesynchronizers:1819-Nonel用户级别的线程还有一类线程是用户级别的,它会根据用户请求的不同而肢丛春发生变化。该类线程的运行情况往往是我们所关注的重点。而且这一部分也是最容易产生死锁的地方。1"qtp496432309-42"prio=10tid=0x00002aaaba2a1800nid=0x7580waitingoncondition[0x00000000425e9000]23java.lang.Thread.State:TIMED_WAITING(parking)45atsun.misc.Unsafe.park(NativeMethod)67-parkingtowaitfor(ajava.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)89atjava.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)1011atjava.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)1213atorg.eclipse.jetty.util.BlockingArrayQueue.poll(BlockingArrayQueue.java:320)1415atorg.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:479)1617atjava.lang.Thread.run(Thread.java:662)18192021Lockedownablesynchronizers:2223-None从上述的代码示例中我们可以看到该用户线程的以下几类信息:Ø线程的状态:waitingoncondition(等待条件发生)Ø线程的调用情况;Ø线程对资源的锁定情况;

1 Jetty6自带的配置文件etc/jetty.xml,已经包括了http配置。

2 一般情况下是默认http配置。

除非etc/jetty.xml配置文件生效茄亩

<Set name="handlers">

<Array type="org.mortbay.jetty.Handler">

<Item>

<Ref id="RequestLog"/>

</Item>

......

</Array>

</Set>

RequestLog Item标签放在最前面

修改配置

<Set name="ignorePaths">颤笑森

<Array type="String">

<Item>/image/*</Item>升碧

<Item>*.css</Item>

</Array>

</Set>

即,配置 *** 作数据

3修改过的http配置的位置:

<Arg><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Arg>

需要改为:

<Arg><SystemProperty name="jetty.home" default="."/>/logs/yyyy_mm_dd.request.log</Arg


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12298020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存