Java NIO
关于NIO,之前也不是没有总结过,但是老忘,每一次忘记之后再次拿起,可能会有些新的感悟,直到发现忘记的根本原因是没掌握准它和Blocking IO的真正区别。NIO能解决掉BIO存在的问题,才是NIO存在的真正意义。 NIO的意义所在 BIO的瓶颈 NIO事件模型 Java NIO组件 SelectableCha...
关于NIO,之前也不是没有总结过,但是老忘,每一次忘记之后再次拿起,可能会有些新的感悟,直到发现忘记的根本原因是没掌握准它和Blocking IO的真正区别。NIO能解决掉BIO存在的问题,才是NIO存在的真正意义。 NIO的意义所在 BIO的瓶颈 NIO事件模型 Java NIO组件 SelectableCha...
之前也不是没总结过Java IO的内容,主要受限于水平,写的总是有限。很多很多年前,Java 字节流 字符流 转换流写得就比较寒碜,第一次接触java io,想把自己看到的东西赶紧记下来,实在是囿于初学这水平,现在都不忍直视。(说实话Java IO这一套封装对于初学者来说是有点儿晕……)后来这一篇Java IO的实现倒是好了不少,介绍了一下Java IO里的包装流,也就是装饰器模式,但是说实...
一个应用想要受欢迎,除了强大的功能,还要有用户友好的可管理方式。这里介绍Tomcat的两种管理方式: manager:用户界面; JMX:程序接口; manager web app ContainerServlet JMX MBeanServer ObjectName ...
Tomcat启动后应该使用shutdown.sh脚本,给Server发送”SHUTDOWN”进行关闭,完成Tomcat lifecycle的stop阶段。但是如果用户直接强制退出了,还能执行清理阶段吗? ShutdownHook Catalina注册shutdownhook ShutdownHook Java有关闭机制。在jvm退出(只有守护线程、或者Linux命令行Ctrl...
回顾之前所说的“关联”,比如Server关联Service,Service关联Connector和Container,Container关联子Container等等,都是通过setXXX方法将后者放入前者,使前者持有后者的引用,以此达成“关联”的效果。 Tomcat作为一个servlet容器,让用户部署web应用,这些“关联”应该由用户来决定,用户怎么告诉Tomcat哪个组件关联哪个组件?...
之前定义完Connector和Container,直接手动分别启动二者,并使用read来阻止主线程退出,过于简陋,不能算是一个生产环境的Tomcat。至少存在三个不太好的地方: 手动启动Connector和Container,启动方式不够优雅; 关闭方式不够优雅; 只有一个Connector,如果有多个Connector,就可以一个处理http请求,一个处理https请求; ...
session可以让Tomcat识别多个请求来自于同一个用户,既然涉及到用户,就涉及到权限。比如有的servlet只有管理员才能访问,其他的普通用户也可以访问。 org.apache.catalina.Realm org.apache.catalina.Authenticator 关于认证的知识 权限配置 http认证过程 ...
http是无状态的,但是很多应用都要记住不同的请求来自同一个用户,比如需要登录的网站。servlet规范定义了javax.servlet.http.HttpSession来做这件事:Provides a way to identify a user across more than one page request or visit to a Web site and to store in...
Tomcat是一个servlet容器,要载入程序猿开发的servlet才能使用servlet的功能。servlet类的载入本质上使用的是jdk提供的ClassLoader,但是Tomcat很有必要制定一套自己的Loader,在load servlet class时制定一些规则。 org.apache.catalina.Loader WebappLoader &am...
servlet是有生命周期的,需要在不同的阶段调用init/destory等。同时Tomcat包含有很多组件,他们的启动必然是有先后顺序的,也是有联系的,不能漏掉任何一个。为了统一启动关闭这些组件,最好的办法就是给组件都加上生命周期。 org.apache.catalina.Lifecycle Lifecycle vs. Pipeline or...