标签:
刚接触ssh项目的时候,只知道照着demo写,出现问题了就百度,解决了就沾沾自喜,现在尝试着做一些总结,提升下自己。
一个简单的ssh项目是怎么在服务器上部署(deploy),服务器又是怎么加载实例化项目代码了?
项目在Tomcat发布之后,Tomcat会加载这个项目到webapps目录,run,仔细看下Console上的日志发现,Tomcat先检查jar包,然后加载web.xml。
默认加载顺序为<context-param>---<listener>---<filter>---<servlet>,Tomcat容器创建一个ServletContext(上下文)。web项目所有部分共享这个上下文。容器首先将<context-param>转换为key-value,交给ServletContext,然后创建<listener>实例。
listener中会有初始化方法,获取ServletContext中的context-param,在ssh中,ContextLoaderListener监听器会加载contextConfigLocation的value(即application.xml的路径),然后Tomat会加载Spring配置文件,初始化配置文件中的bean instances。
一般项目会用Spring托管hibernate,这样初始化beans的时候,容器就会家加载hibernate.cfg.xml,读取上面的配置信息,一般是和数据库连接,连接池管理,映射文件信息以及hibernate自己配置有关的信息。这样,当应用发布后,用户请求就能和数据库交互了。
最后接着加载filter,例如struts2的过滤器,最后就是大家最喜欢的Server startup in XXXX ms了。
标签:
原文地址:http://www.cnblogs.com/hutiantian/p/4725644.html