• About
  • Trade
  • Science
  • Eclipse
  • Software
  • Infoq
  • T
  • Projects
  • Contact
  • Thinks
  • | 登录 |

    继续“了解sevlet容器”

    2006年11月20日 下午 30:58 | 作者:summer

    上一章里面讲到两个“高级”参数:init-param,load-on-startup

    beanFactoryConfig ./services-config.xml
    1

    init-param在程序中的使用:

    public void init(ServletConfig servletConfig) throws ServletException {
    String beanFactoryConfig = servletConfig.getInitParameter("beanFactoryConfig");
    context = new ClassPathXmlApplicationContext(beanFactoryConfig);
    }

    程序中我们得到的beanFactoryConfig的值为”./services-config.xml”,以上代码片断是用LiveServlet来初始化Spring的bean容器。
    load-on-startup表明该servlet是在web启动时就加载的,其中”1″表明启动顺序,还可以有”2″等值,数值的大小表明了启动的优先级别。

    No Tags

    tomcat bootstrap

    2006年11月19日 下午 18:16 | 作者:summer

    下载apache-tomcat-6.0.2-src我们来分析一下tomcat的部分源码。
    查看catalina.sh或者catalina.bat可以发现这一行:org.apache.catalina.startup.Bootstrap “$@” start
    由此我们了解到调用Bootstrap来启动系统是tomcat启动的第一步。
    下一步我们再来查看一下Bootstrap.java的源码,

    A.main()
    里面逻辑很清晰也很简单:
    1.new一个Bootstrap对象,并调用init()来初始化系统。
    2.通过外部传入的参数来决定是start,stop,startd,stopd。

    B.init()
    main()里面的init()所做的事情:
    1.设置CatalinaHome
    2.设置CatalinaBase
    3.初始化ClassLoaders
    4.使用初始化好的classLoader来做一些事情

    B.1和B.2都是通过配置文件和当前环境所处绝对路径来设置实际的运行环境。

    B.3创建了commonLoader,catalinaLoader,sharedLoader,它们之间的关系是:
    commonLoader—->catalinaLoader,commonLoader—->sharedLoader
    catalinaLoader与sharedLoader是位于同一层级,并且有共同的parent:commonLoader

    B.4主要是调用catalinaLoader中的org.apache.catalina.startup.Catalina来启动系统。

    No Tags

    如何让servlet为我们干活

    2006年11月15日 下午 38:29 | 作者:summer

    同样我们需要在web.xml中做一些配置:


    liveServlet
    /live/*


    这段配置的意思就是:该应用中/live/目录下所有请求都会交由liveServlet来处理,即访问/live/hello或者/live/hello.htm这样的请求都会交给liveServlet来处理。liveServlet就是之前我们在配置文件中定义的那个servlet。

    我们可以配置多个servlet来处理不同类型的请求,由于url-pattern是支持统配符的,可以组装出很多种的URL,我们也可以使用一个serlvet,该servlet将接收到的请求根据不同的类型来进行分发给后面的程序去处理,这里的不同的类型即是通过url不同来区分的。

    No Tags

    了解servlet容器

    2006年11月13日 下午 43:07 | 作者:summer

    容器:容纳符合规格的东西器皿。servlet容器:能放置servlet的“器皿”,servlet必须符合servlet的一些规格。

    HttpServlet是servlet容器中最基本的类型了,只要继承HttpServlet便可以被容器执行,当然首先你得在该容器的配置文件web.xml中做一些声明:

    
    
        liveServlet
        net.live51.LiveServlet
          
    beanFactoryConfig
        
    ./services-config.xml
          
        1
     
    

    以上片断是做了一个servlet-name为liveServlet的声明,指明了实际处理的类,当然net.live51.LiveServlet是继承了HttpServlet的,其中init-param和load-on-startup为高级用法,以后在讲到,将以上配置简化一下:

    
    
        liveServlet
        net.live51.LiveServlet
    
    

    这样也是可行的。

    定义好了如何使用呢?
     

    using dwr with your spring bean

    2006年11月6日 下午 15:41 | 作者:summer

    In dwr sites, it tell use three way to use dwr with spring. But the important details are ignored on his suggest way.

    If you are using spring and have your private spring bean manger.how to use DWR?

    1. define a spring bean implements BeanFactoryPostProcessor
    2. overwrite postProcessBeanFactory function
    3. call SpringCreator.setOverrideBeanFactory(beanFactory)

    the code was just like this:

    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
    import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
    import uk.ltd.getahead.dwr.create.SpringCreator;
    /**  * @author summer  *  */
    public class DWRSpringIntegrator implements BeanFactoryPostProcessor {
        public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
            SpringCreator.setOverrideBeanFactory(beanFactory);
        }
    }

    No Tags
    Pages: 1 2 3 4