今天完成的事情:
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.
在POM.XML删除这个依赖包
重新打包到服务器,成功运行
得到两个教训:
在使用Maven处理依赖包的时候,一定不要随便乱添加依赖,用到的包才导入,没用到包的声明要及时删掉。
在整合多个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运行于模块化的架构之上,这意味着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捕获而输出的日志
====================================
评论