D0n9X1n
D0n9X1n

Reputation: 2134

Some confusion about the source code of Tomcat

Some Confusion about the source code of Tomcat

Some day before, I began to read the source code of the tomcat

First, the server starts from the main method in the org.apache.catalina.startup.BootStrap, but when I go into the code bootstrap.init(), and I was confused by the following code.Like:

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

Just for easy to debug the tomcat, I change the code like this:

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

The code can still work. And in the Tomcat source code, there are many code block like this, For example,in org.apache.catalina.startup.BootStrap.start() we can find the following code:

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

Still for easy to debug, I turn the code into: >

enter image description here

The code still works fine.So I was confused, Here are my questions.

  1. what's difference between the two kinds of code?
  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?

Upvotes: 1

Views: 664

Answers (1)

Stephen C
Stephen C

Reputation: 718788

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

The Tomcat code eliminates a static dependency on the Catalina class. In general, that has a couple of potential benefits:

  • It may allow you to substitute an alternative version of that class ... without changing the code. (But not here, because the FQN for the class is hard-wired.)

  • For some JVMs, it may result in deferred class loading which can give faster JVM startup. (I'm not sure if that is relevant here.)

In addition, the Tomcat code is explicitly creating a new classloader and loading the Catalina using that ... rather than the default one for the Bootstrap class. I'm not sure of the significance of that.

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

Ask the coder. The (possible) benefits are as I described above, but it may have been done for some other reason ...

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

Probably nothing, though it might affect the classloader organization for Tomcat in some way that impacts on your webapps.

But if you are worried, don't change the code! There is no real need to change this ... based on why you said you are doing it. There's a saying:

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

Upvotes: 1

Related Questions