免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3182 | 回复: 1
打印 上一主题 下一主题

关于Tomcat中的反射机制的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-18 15:51 |只看该作者 |倒序浏览
本帖最后由 杂食肉鸟 于 2014-08-18 15:51 编辑
  1. /**
  2.      * Initialize daemon.
  3.      */
  4.     public void init()
  5.         throws Exception
  6.     {

  7.         // Set Catalina path
  8.         setCatalinaHome();
  9.         setCatalinaBase();

  10.         initClassLoaders();

  11.         Thread.currentThread().setContextClassLoader(catalinaLoader);

  12.         SecurityClassLoad.securityClassLoad(catalinaLoader);

  13.         // Load our startup class and call its process() method
  14.         if (log.isDebugEnabled())
  15.             log.debug("Loading startup class");
  16.         Class startupClass =
  17.             catalinaLoader.loadClass
  18.             ("org.apache.catalina.startup.Catalina");
  19.         Object startupInstance = startupClass.newInstance();

  20.         // Set the shared extensions class loader??????????????
  21.         if (log.isDebugEnabled())
  22.             log.debug("Setting startup class properties");
  23.         String methodName = "setParentClassLoader";
  24.         Class paramTypes[] = new Class[1];
  25.         paramTypes[0] = Class.forName("java.lang.ClassLoader");
  26.         Object paramValues[] = new Object[1];
  27.         paramValues[0] = sharedLoader;
  28.         Method method =
  29.             startupInstance.getClass().getMethod(methodName, paramTypes);
  30.         method.invoke(startupInstance, paramValues);

  31.         catalinaDaemon = startupInstance;

  32.     }
复制代码
上面这段代码是tomcat的Bootstrap.java中的init()函数的,相信研究过tomcat的人都应该看过这个,我就不再解释了。
我的问题是,既然在Object startupInstance = startupClass.newInstance();这已经获得了Catalina类的实例了,为什么在下面不直接调用那个方法,而要使用反射调用呢?

论坛徽章:
0
2 [报告]
发表于 2014-08-18 21:38 |只看该作者
大神们不要只看啊,说说你的想法啊。或者我有什么描述不清的地方,你指出来我再详细描述个
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP