下面是这个方法的源代码,我的理解是通过工厂方法返回一个RunData对象,RunData对象是在整个框架中起到参数和信息传输的作用。public static RunData getRunData(HttpServletRequest req, HttpServletResponse res, ServletConfig config)
        throws TurbineException, IllegalArgumentException
    {
        if(req == null || res == null || config == null)
            throw new IllegalArgumentException("RunDataFactory fatal error: HttpServletRequest, HttpServletResponse or ServletConfig were null.");
        if(!tryRunDataService)
            break MISSING_BLOCK_LABEL_50;
        return TurbineRunDataFacade.getRunData(req, res, config);
        Exception x;
        x;
        log.info("No Run Data Service available, not trying again!");
        tryRunDataService = false;
        TurbineRunData data = (TurbineRunData)TurbinePool.getInstance(class$org$apache$turbine$services$rundata$DefaultTurbineRunData != null ? class$org$apache$turbine$services$rundata$DefaultTurbineRunData : (class$org$apache$turbine$services$rundata$DefaultTurbineRunData = class$("org.apache.turbine.services.rundata.DefaultTurbineRunData")));
        data.setRequest(req);
        data.setResponse(res);
        String contextPath = req.getContextPath();
        String scriptName = contextPath + data.getRequest().getServletPath();
        data.setCookieParser(new DefaultCookieParser());
        data.setParameterParser(new DefaultParameterParser());
        data.setSession(data.getRequest().getSession(true));
        data.setServletConfig(config);
        data.setServerData(new ServerData(data.getRequest().getServerName(), data.getRequest().getServerPort(), data.getRequest().getScheme(), scriptName, contextPath));
        return data;
    }