首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Tomcat 工作原理、使用方法和错误汇总

Tomcat 工作原理、使用方法和错误汇总

作者头像
城市中的游牧民族
发布2019-02-21 10:31:48
发布2019-02-21 10:31:48
1.2K00
代码可运行
举报
文章被收录于专栏:前端真相前端真相
运行总次数:0
代码可运行

本地环境:Tomcat 6、Windows 10、Java 1.7、myeclipse 10

一、使用方法

1.1 Tomcat 部署静态页面

参考链接:https://blog.csdn.net/qq_32786873/article/details/79609314

二、使用错误

2.1 503 Service Unavailable

原因:

2.2 The web application [/project-name] registered the JDBC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

或者The web application [/project-name] registered the JDBC driver [com.alibaba.druid.proxy.DruidDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 可能存在的问题

  • 数据库账号密码错误
  • 有多个数据库配置源
  • jar包问题,把连接jdbc的jar包,拷贝到tomcate的lib目录下就可以了,如:ojdbc14.jar
  • 服务器内存冲突,重启系统
  • Tomcat内存不够 Window->Preferences->tomcat 点击右侧的按钮, Creat Launch Configuration,在你对应的tomcat属性Aarguments下面添加一句话: -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=256m
  • 误报:https://github.com/alibaba/druid/issues/1699

实现ServletContextListener,然后再contextDestroyed()方法中添加如下代码: Enumeration drivers = DriverManager.getDrivers(); while (drivers.hasMoreElements()) { Driver driver = drivers.nextElement(); try { DriverManager.deregisterDriver(driver); logger.info(String.format(“deregistering jdbc driver: %s”, driver)); } catch (SQLException e) { e.printStackTrace(); logger.error(String.format(“deregistering jdbc driver: %s”, driver)); } } 最后在web.xml中注册自己的监听器,问题解决。

2.3 lib1.so: lib2.so: 无法打开共享对象文件: 没有那个文件或目录

(1)如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令 (2)

代码语言:javascript
代码运行次数:0
运行
复制
   # cat /etc/ld.so.conf
    include ld.so.conf.d/*.conf
    # echo "/usr/local/lib" >> /etc/ld.so.conf
    # ldconfig

(3) export LD_LIBRARY_PATH=…/webapps/项目名称/WEB-INF/classes

参考链接:https://www.cnblogs.com/Anker/p/3209876.html

三、原理

概述

HTTP server主要用来给浏览器等客户端提供静态资源的访问功能,还有代理服务器、负载均衡等功能。当然,通过CGI/Servlet技术,也可以将处理过的动态内容通过HTTP Server分发,但是一个HTTP Server始终只是把服务器上的文件如实的通过HTTP协议传输给客户端。

而tomcat属于application server,也是绑定服务器IP并监听TCP端口。它实现了部分HTTP server的功能,没有nginx和Apache的功能丰富。主要用于处理动态内容。没有提供java EE规范,如下图:

架构

两大核心部分connector(连接器)和container(容器)。

tomcat的work目录是工作目录,在浏览器访问jsp =》java=》.class。tomcat定时扫描work目录,不是实时的,因此修改jsp文件后不会立马生效,可以立即删除work目录。

针对由jsp转换成的java文件,比如my-jsp.java,tomcat编译支持的文件大小最大为64k。改进:1.把jsp中的业务逻辑写入单独的类,在jsp中通过调用这个类的静态方法来执行;2.将jsp页面中的js提取出来放到单独的js文件内。

AJP协议:二进制协议 客户端< - http / s->代理< - http / s - >应用

VS

客户端< - http / s->代理< - AJP - >应用

xshell 关闭后 linux的tomcat断掉解决

方法一: 输入命令

nohup ./catalina.sh run & 显示为:

[1]8579

如何关掉?

输入命令查看进程号

代码语言:javascript
代码运行次数:0
运行
复制
ps -ef |grep tomcat

显示处root 456 33345 99。。。省略

其中33345为端口号

输入命令结束进程 kill -9 进程号

kill -9 33345

方法二: 启动方式 (1)Catania (2)startup 使用startup方式启动tomcat,tomcat运行不受shell影响。

Several ports (8005, 8080, 8009) required by Tomcat Server at localhost are already in use 方法一:进入tomcat bin目录执行shutdown.sh或者shutdown.bat。 方法二:进一步排查——任务管理器或者命令行kill杀掉Java、tomcat相关进程,重启eclipse。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年10月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、使用方法
  • 二、使用错误
  • 三、原理
  • xshell 关闭后 linux的tomcat断掉解决
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档