getServer().init()其实就是调用server的init函数,但是server是个interface,还要看其在new的时候,这个就是多态。
-
digester.addObjectCreate(
"Server"
,
-
"org.apache.catalina.core.StandardServer"
,
-
"className"
);
-
digester.addSetProperties("Server"
);
-
digester.addSetNext("Server"
,
-
"setServer"
,
-
"org.apache.catalina.Server"
);
digester.addObjectCreate("Server",
"org.apache.catalina.core.StandardServer",
"className");
digester.addSetProperties("Server");
digester.addSetNext("Server",
"setServer",
"org.apache.catalina.Server");
上面的句子就类似于
-
Server server =
new
StandardServer();
-
server.init();
Server server = new StandardServer();
server.init();
具体的继承关系的部分如图
源代码很好的运用了interface和抽象类,并且继承和接口实现都有运用。可以很好的理解接口和抽象类的关系。
依照这个UML图,写了个小的demo还分析,打包在附件中,interface和class在多态上的作用。
运行了如下语句,结果发现结果一样。
-
Server server =
new
StandardServer();
-
server.init();
-
-
LifecycleMbeanBase lserver = new
StandardServer();
-
lserver.init();
-
-
Lifecycle lcserver = new
StandardServer();
-
lcserver.init();
Server server = new StandardServer();
server.init();
LifecycleMbeanBase lserver = new StandardServer();
lserver.init();
Lifecycle lcserver = new StandardServer();
lcserver.init();
StandardServer既实现了接口server,又继承了来自server父类lifecycle(也是一个接口)实现的类LifecycleMbeanBase 。
这个关系就显的复杂了,到底在多态的时候怎么运作的?
可否这样认为:1. 实现接口,也是一定意义上的继承 2.接口的方法,最终运行还要看它实现的类
StandardServer最终拥有了server,lifecycle,MBeanRegistration三个特征。
server--定义很多例如全局Naming资源,端口号,地址等
lifecycle--规定了整个运行的状态,例如初始化后的状态可以使stop,也可以是starting,然后是started等。有点类似于状态机。
MBeanRegistration--资源的注册,涉及到JVM的管理
相关推荐
StandardServer server = (StandardServer) bootstrap.getServer(); server.setPort(8080); // 设置监听端口 bootstrap.start(); // 启动Tomcat // 在此处添加你的业务逻辑 bootstrap.stop(); // 停止Tomcat }...
- **服务器初始化**:通过`getServer().setCatalina(this)`设置`Catalina`对象与服务器对象之间的关联,然后调用`getServer().init()`进行初始化。 6. **StandardServer初始化**: - 在`init`方法中,遍历所有的...
====================research the source about apache-tomcat-7.0.57======...引领一个初始化流程:通过反射调用 Catalina.load()方法--> getServer().init() -引 发->LifecycleBase.init()->StandardServer.initI
Embeded Tomcat是指将Tomcat服务器作为Java应用程序的一部分,在代码中直接初始化和管理,而不是作为一个独立的服务运行。这为开发者提供了灵活性,可以在构建和测试阶段轻松地集成和部署Web应用。 要使用embeded ...
# ./exfilkit-cli.py -m exfilkit.methods.http.param_cipher.GETServer -lp 80 -o output.log 客户 $ ./exfilkit-cli.py -m exfilkit.methods....
棒棒糖░▒▓ ...渗透方法/ etc / shadow-> HTTP GET请求服务器# ./lollipopz-cli.py -m lollipopz.methods.http.param_cipher.GETServer -lp 80 -o output.log客户$ ./lollipopz-cli.py -m lollipopz.methods....
4. **资源节省**:由于每个应用都有自己的Tomcat实例,避免了多应用共享服务器可能导致的资源竞争,提升了项目的执行效率。 5. **测试友好**:在单元测试和集成测试中,可以快速启动和停止Tomcat,便于自动化测试。...
1. **初始化配置**: ```java Properties props = System.getProperties(); props.put("mail.smtp.host", mitem.getServer()); props.put("mail.smtp.auth", "true"); ``` - `Properties`对象用于存储邮件服务...
2. **初始化Tomcat**:创建一个`Tomcat`实例,并设置web应用的根目录(通常是`WebappBase`),例如`new Tomcat().setBaseDir(".")`,这表示当前目录为web应用的基础目录。 3. **配置Context**:添加`Context`对象,...
2. **初始化Tomcat**:创建`org.apache.catalina.startup.Tomcat`对象,并配置服务器端口、Web应用上下文路径等。 3. **添加Web应用**:使用`Tomcat.addWebapp()`方法将应用的WAR文件或目录添加到服务器中。 4. **...
在本篇文章中,我们将探讨如何对 Spring Boot 内嵌的 Tomcat 进行个性化配置。 首先,Spring Boot 提供了 `TomcatEmbeddedServletContainerFactory` 类来定制 Tomcat 容器的行为。通过扩展这个类并覆盖其方法,我们...
* JAR files found in the "server" directory under "catalina.home"), and * starts the regular execution of the container. The purpose of this * roundabout approach is to keep the Catalina internal ...
Delphi,作为一款强大的Windows应用程序开发工具,提供了丰富的支持来实现OLE通信,包括客户端(Client)和服务器(Server)的交互。本篇文章将深入探讨如何使用Delphi实现OLE客户端和服务器的通信。 首先,我们要...
@RequestMapping("/getServer") public String getServerInstance(){ List<ServiceInstance> list = discoveryClient.getInstances("consul-order"); for (ServiceInstance serviceInstance : list) { if...
接下来,编写Java代码来初始化和管理嵌入式Tomcat。以下是一个简单的示例: ```java import org.apache.catalina.startup.Tomcat; public class Main { public static void main(String[] args) throws Exception...
4. `src/main/plugin.yml`:插件的核心配置文件,定义插件的元数据,如名称、版本、作者等。 三、Maven构建流程 1. `mvn clean`:清理上一次构建生成的文件,确保新的构建从头开始。 2. `mvn compile`:编译源代码...
Node.js在启动时会检查NODE_UNIQUE_ID环境变量,根据其值决定是执行master进程的初始化代码(masterInit)还是worker进程的初始化代码(workerInit)。 workerInit函数中定义的cluster._getServer方法会拦截...
在Java开发领域,Tomcat是一个广泛应用的开源Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,为Web应用程序提供了运行环境。SpringBoot则以其便捷的微服务开发方式和自动化配置闻名,它默认集成...