gpt4 book ai didi

java - 关于Tomcat源码的一些困惑

转载 作者:行者123 更新时间:2023-11-28 22:20:36 25 4
gpt4 key购买 nike

关于Tomcat源码的一些困惑

前几天,我开始阅读 tomcat 的源代码

首先,服务器从 org.apache.catalina.startup.BootStrap 中的主要方法启动,但是当我进入代码 bootstrap.init() 时,我对以下代码感到困惑。喜欢:

![image](images/2014-02-23-1.png)

为了方便调试tomcat,我把代码改成这样:

![image](images/2014-02-23-2.png)

代码仍然可以工作。而在Tomcat的源码中,有很多这样的代码块,比如org.apache.catalina.startup.BootStrap.start() 我们可以找到如下代码:

![image](images/2014-02-23-3.png)

还是为了方便调试,我把代码改成了: >

enter image description here

代码仍然可以正常工作。所以我很困惑,这是我的问题。

  1. 这两种代码有什么区别?
  2. 为什么Tomcat的编码器不像我写的那样写代码?有什么好处?
  3. 如果带有我这种代码的 Tomcat 在生产环境中工作,会发生什么或什么都不会发生?

最佳答案

1) what's difference between the two kinds of code?

Tomcat 代码消除了对 Catalina 类的静态依赖。一般来说,这有几个潜在的好处:

  • 它可能允许您替换该类的替代版本……而无需更改代码。 (但这里不是,因为类的 FQN 是硬连线的。)

  • 对于某些 JVM,它可能会导致延迟类加载,从而加快 JVM 启动速度。 (我不确定这在这里是否相关。)

此外,Tomcat 代码显式创建了一个新的类加载器并使用它加载 Catalina,而不是 Bootstrap 类的默认加载器。我不确定这有什么意义。

2) Why the coder of Tomcat do not write the code like what I write? what's the benefit?

询问编码员。 (可能的)好处正如我上面所描述的,但它可能是出于其他一些原因而完成的......

3) If the Tomcat with my kind code works in a production environment, what will happen or nothing will happen?

可能没什么,尽管它可能会以某种方式影响 Tomcat 的类加载器组织,从而影响您的 Web 应用程序。

但如果您担心,请不要更改代码!没有真正需要改变这个......基于你说你这样做的原因。有一句话:

"If it ain't broken, don't fix it."

关于java - 关于Tomcat源码的一些困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21965379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com