发表于: 2020-12-08 23:41:00

1 1302


今天完成的事情:


6.在服务器开发环境部署Resin,用"document-directory"的方式配置好War包,用浏览器访问任意查询接口,判断是否可以正确返回数据


7.用Tomcat,Jetty分别重复以上的部署方式,弄清楚三者之间的差别


8.配置好Resin,Tomcat,Jetty的Access.log(不同的WEB服务器的访问日志命名有区别),列出来每一个请求的响应时间,以MS为单位(jetty没配好,还有 响应时间没配置好



明天计划的事情:


配置好Resin,Tomcat,Jetty的Access.log(不同的WEB服务器的访问日志命名有区别),列出来每一个请求的响应时间,以MS为单位(jetty没配好,还有 响应时间没配置好


修改Resin的内存配置,给当前的WEB程序分别设置1G内存,512兆内存,32兆内存,测试最小启动的大小。


用Top命令查看WEB程序的进程号,用Kill 命令 杀掉WEB进程(注意别用错了,如果杀掉了别人的进程,你大概就会被人杀掉)


重新启动服务,用Resin自带的停止脚本,并停止服务,思考Kill命令和停止脚本的区别



遇到的问题:
看师兄小课堂,tomcat,resin,jetty三者之间的比较,不懂一下知识点

servlet容器?Servlet引擎?基于Handler来实现?基于容器设计的?默认采用NIO在处理I/O请求?默认采用BIO处理I/O请求?静态资源又是个啥?html网页吗?


收获:


将包放入jetty的webapp中



运行jetty   java -jar start.jar   ,发现webapps中  war并没有像reain那样解压,无法修改里面的内容



密码错误,重新打包,修改密码



打包碰到错误,百度搜索是SQL语句写错了



Student表不存在,表名应该是student,  s是小写   醉了,看了半天硬是没看出来



重新上次war包



查询学生成功



获取json数据成功




关闭jetty    命令  crtl+c


====================================================
Tomcat 部署



成功部署



报错404



查看日志



在搜了好久,安装网上给的办法没有做出了

然后问师兄


本地起一个tomcat啊,把包直接在本地试,没问题再丢服务器上
测了本地没问题,丢到服务器上就有问题
之后对比jdk,tomcat版本。知道本地用的是 oracaljdk, 服务器的是openjdk

去了解了一下和这个没有关系



那就选择了一个笨办法,对着日志,一个报错搜一条



一个一个搜,例子:

tomcat:Context initialization failed
tomcat:BeanDefinitionStoreException: Failed to read candidate component class:
tomcat:IncompatibleClassChangeError: Class org.springframework.
最终定位应该是这个问题(参考网址:https://my.oschina.net/itblog/blog/528613),这两个jar包发生冲突了


在POM.XML删除这个依赖包



重新打包到服务器,成功运行



得到两个教训:
  1. 在使用Maven处理依赖包的时候,一定不要随便乱添加依赖,用到的包才导入,没用到包的声明要及时删掉。
  2. 在整合多个maven项目的时候,要注意依赖包的版本,因为有些类(可能包含有的字段)在不同的版本中声明可能会不同,错误的类或字段声明将导致IncompatibleClassChangeError。
===================================================
Tomcat,Jetty,reain区别
启动Tomcat和reain时,war会解压。jetty不会。
在服务器上运行时,Jetty和reain对依赖的容忍度比较高,而tomcat只要依赖冲突,就会出现报错

reain需要在conf配置war的路径。而 Tomcat,Jetty不需要,只需要放在webapps包下就好了。



tomcat,resin,jetty三者之间的比较
===========================================================
配置好Resin,Tomcat,Jetty的Access.log(不同的WEB服务器的访问日志命名有区别),列出来每一个请求的响应时间,以MS为单位
==========================================
了解Resin各个日志记录的信息
access.log:resin服务器在被访问时,会将访问者的IP、时间、get/set方式、域名后的URL、以及所用的代理记录在logs的access.log文件中。
jvm-app-0.log:控制台日志,输出项目中我们想打印的日志,也是我们主要跟踪的日志
watchdog-manager.log:字面理解,观察者日志,用来监听端口用的



========================================================================
了解Jetty各个日志记录的信息
没有显示



Jetty的模块化架构(参考网址:https://www.cnblogs.com/duanxz/p/3143374.html

Jetty运行于模块化的架构之上,这意味着Jetty的功能是以模块的方式运行的,比如HTTP、HTTPS、SSL、日志logging、JMX、JNDI、WebSocket等模块。常用的模块如HTTP、JSP和WebSocket模块都是默认就激活的,而其他如HTTPS、JMX等模块则需要手动激活。
原来jetty日志要激活

2、通过命令行激活模块

激活Jetty的模块有两种方式。
第一种方式是通过命令行激活:

java -jar start.jar --add-to-startd=logging
上面的命令会在Jetty目录下创建logging.ini文件,相关的配置可以在此文件中查到。配置日志后,可以再次启动Jetty,并可以查看到日志模块是激活了的。

2、通过配置文件start.ini激活模块

第二种方式是通过配置文件start.ini激活模块
--module=logging
这种方式和前一种相似,且更常用。


启动时间



还是看不到日志



修改这个试试看,虽然不知道是什么



还是不显示日志



==============================================================
了解Tomcat各个日志记录的信息
catalina.out:核心日志,无论是正确信息还是错误信息,tomcat服务还是运行的应用的信息都会记录到该日志(查问题主要看这个日志)
manager/host-manager:管理台的日志
localhost_access_log:访问日志,如配置了nginx代理tomcat,看nginx日志即可
catalina.xxxx-xx-xx.log:记录的信息与catalina.out重复
localhost.xxxx-xx-xx.log:应用初始化未处理的异常最后被tomcat捕获而输出的日志



====================================



返回列表 返回列表
评论

    分享到