load()方法按从上到下顺序分析(主要分析本人所没学过的知识点,其它略过...). Digester类作用 使用sax技术对xml进行解析 未开始解析时Digester.push(this)这个用来为catalina设置server Digester的stack对象栈中持有Catalina对象, 解析xml过程中需要用到的类: Rule:这个类有很多子类,为解析时遇到不同的匹配模式pattern调用不同的处理动作即不同rule. 当解析到开始标记时会调用其子类ObjectCreateRule.…
上篇解析Bootstrap到 daemon.setAwait(true); daemon.load(args); daemon.start(); 这三个方法实际是反射调用org.apache.catalina.startup.Catalina类的方法 对Catalina类有一段解释 这个google翻译真强 Startup/Shutdown shell program for Catalina. The following command line options are recognized:…
classOf.isInstanceOf.asInstanceOf三个预定义方法分析 Scala的三个预定义(predefined)方法,我们经常用到:它们用来感觉很简单, 但是里面还是隐藏了一些细节东西,不妨花点时间来分析分析. 先上代码 PredefineTest.scala object PredefineTest{ def main(args: Array[String]):Unit = { val c : Char = 97.asInstanceOf[Char] "hello"…
tomcat启动控制台中文乱码问题解决方法,修改tomcat安装路径/conf/logging.properties文件 java.util.logging.ConsoleHandler.encoding = UTF-8修改为 java.util.logging.ConsoleHandler.encoding = GBK 另种修改方法为修改tomcat安装路径/bin/catalina.bat文件,增加 set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSi…
上一回load()方法解析讲到xml解析完成. load()内部接下来会获取server getServer().setCatalina(this); 这个server从createStartDigester()方法中可以看出getServer()返回的是StandardServer对象 具体请看: Catalina.createDigester方法详细理解 1.接着执行Server.init方法 getServer().init();看StandardServer类的关系public fina…
概述 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat 上一篇咱们分析了 startup.bat 脚本 这一篇咱们来分析 catalina.bat 脚本. 至于 setclasspath.bat 这个脚本, 相信看完这一篇, 就可以自己看懂这个脚本了. 可以点击 [Tomcat 源码分析系列] (附件) : setclasspath.bat 脚本 查看附注释的 setclasspath.bat 脚本 catalina.ba…
上篇写到StandardService.init() 这个方法做什么呢?一起来看看. 这个类也是实现了Lifecycle 如图.这个图中i表示Interface接口.如Lifecycle,Container,Executor C表示Class类 如StandardService C上有一个小A表示Abstract Class抽象类 如LifecycleBase,WebappClassLoaderBase 感觉用这个图来表示继承关系很好,但这个不能显示出实现关系.要用类图才可以. public c…
方法一: 通过修改Tomcat启动文件-Djava.security.egd=file:/dev/urandom 通过修改JRE中的java.security文件securerandom.source=file:/dev/urandom 上面的方法不行再尝试下面的 方法二: yum install rng-tools安装rngd服务(熵服务) systemctl start rngd启动服务 如果你的CPU不支持DRNG特性或者像我一样使用虚拟机,可以使用/dev/unrandom来模拟. cp…
从链接 Tomcat中组件的生命周期管理公共接口Lifecycle 可以知道调用的是StandardServer.startInternal() @Override protected void startInternal() throws LifecycleException { fireLifecycleEvent(CONFIGURE_START_EVENT, null); setState(LifecycleState.STARTING); globalNamingResources.st…
1 - 概述脚本catalina.sh用于启动和关闭tomcat服务器,是最关键的脚本另外的脚本startup.sh和shutdown.sh都是使用不同的参数调用了该脚本该脚本的使用方法如下(引自该脚本本身):  echo "Usage: catalina.sh ( commands ... )"  echo "commands:"  echo "  debug             Start Catalina in a debugger" …