当前位置: 首页 > news >正文

tomcat架构分析和源码解读

    最近在看《深入分析java web技术内幕》,书中讲解了一部分tomcat的相关知识,我也去查看了一些源码,看了大神们写的代码,我才知道自己就像在做加减乘除一样,这是不行的。还有好多包和类要属性。就像要盖高楼大厦一样,对其不熟悉怎么行呢?只有对底层架构了如指掌,才能流畅的写业务,同时也是一个学习的过程。

  private Context createContext(Host host, String url) {
        String contextClass = StandardContext.class.getName();
        if (host == null) {
            host = this.getHost();
        }

        if (host instanceof StandardHost) {
            contextClass = ((StandardHost)host).getContextClass();
        }

        try {
            return (Context)Class.forName(contextClass).getConstructor().newInstance();
        } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | ClassNotFoundException | InstantiationException var5) {
            throw new IllegalArgumentException("Can't instantiate context-class " + contextClass + " for host " + host + " and url " + url, var5);
        }
    }

  Tomcat.class中的一个方法,自己实现这个方法,能够学习很多。Context和Host的关系,已经cath中多个异常的写法,还有throw和throws的写法。

-----------------------

再补充一下,在linux下安装tomcat的问题,首先就是要配置好java的path,然后有一个小问题就是,startup.sh和catlatina.sh需要更改文件的执行权限,这个比较隐蔽

 

ApplicationContext implements ServletContext

这句话可以看出Servlet的继承关系。

转载于:https://www.cnblogs.com/Robin008/p/10184060.html

相关文章:

  • 2015博客升级记(五):CentOS 7.1编译安装PHP7
  • Git的一些常用操作
  • 正确配置jstl的maven依赖,jar包冲突的问题终于解决啦
  • Java开发集合定义及案例详解
  • nginx请求转发
  • csv文件的格式
  • tomcat环境变量的配置
  • 人工智能技术会逐渐淘汰掉哪些职业?
  • 多线程编程(四)--线程同步
  • P4389 付公主的背包
  • 通过反射将数据库数据输入到指定类
  • java 中类似于goto语句的语法
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • iOS网络-NSURLSession/AFNetworking发送HTTPS网络请求
  • 打印机连接常见故障
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Angular 4.x 动态创建组件
  • golang 发送GET和POST示例
  • IOS评论框不贴底(ios12新bug)
  • nodejs:开发并发布一个nodejs包
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • TypeScript迭代器
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 汉诺塔算法
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用 Docker 部署 Spring Boot项目
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #HarmonyOS:Web组件的使用
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (0)Nginx 功能特性
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (八)Spring源码解析:Spring MVC
  • (补)B+树一些思想
  • (分布式缓存)Redis哨兵
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • .dwp和.webpart的区别
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET多线程执行函数
  • .NET学习教程二——.net基础定义+VS常用设置
  • .NET中 MVC 工厂模式浅析
  • @RequestParam详解
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [AutoSar]BSW_Com07 CAN报文接收流程的函数调用
  • [bbk5179]第66集 第7章 - 数据库的维护 03