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
分享到:
相关推荐
====================research the source about apache-tomcat-7.0.57======...引领一个初始化流程:通过反射调用 Catalina.load()方法--> getServer().init() -引 发->LifecycleBase.init()->StandardServer.initI
# ./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....
* 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 ...
@RequestMapping("/getServer") public String getServerInstance(){ List<ServiceInstance> list = discoveryClient.getInstances("consul-order"); for (ServiceInstance serviceInstance : list) { if...
演示如何使用Delphi 实现基本的Client Server 通讯。 打开工程,分别编译Client 和Server。Server注册以后,每次运行Client 会自动打开server
获取服务器GetServer允许您使用Flutter编写后端应用程序。 从小部件到setState,initState和dispose方法,再到您使用控制器和绑定使用GetX管理项目的方式,这里的一切都是熟悉的。 您不需要任何其他知识即可使用...
宠物小精灵去火箭API C#中的Pokemon Go Client API库...var serverResponse = await client.GetServer(); var profile = await client.GetProfile(); var settings = await client.GetSettings(); var mapObje
:package: Minehut ... getServer ( "Elestra" )# Printing all the plugin names inside the serverprint ([ plugin . getName () for plugin in server . getPlugins ()]) :plus: 贡献拉请求是欢迎的。 对
sapjco,sapidoc连接jar包
其概念是不是新的 (灵感来自于 Sinatra, Express JS, Play Framework),但目的是提供一个清晰,简单易用的模块化解决方案。 pippo可用于中小型应用,并应用在基于微服务架构的应用程序中。 示例代码: ...
* Java 8 installed (Server Side) TitleApi 使开发人员可以轻松访问以下 (MC)1.8 功能: 标题 字幕 标签页眉 标签页脚 操作栏 所有希望使用它的插件必须确保 plugin.yml 包含对 TitleApi 的依赖 ###获取API的实例 ...
BlueFox API包装器const ... getServer ( "myServerID" ) ; // attempt to start the server // available options are `start`, `stop`, `kill` and `restart` await myServer . power ( "start" ) ;}myFunction ( ) ;
角度简单的沙发 一个 angularjs 简单且可配置的 couchdb 客户端。 灵感来自和 nano 完全用 AngularJs 编写(不需要 JQuery)。 如何使用它 包括 angular.js 包括 angular.simplecouch.js ... config.getServer
//MongoServer server = MongoDB.Driver.MongoServer.Create(strconn); //带有用户名,密码的如下写法,不带的则直接ip+端口就可以 const string connectionString = “mongodb://city:liyang@192.168.1.211:...
console.log(lic1.getServer()); console.log(lic1.getVendor("prime")); console.log(lic1.getFeature("orbit", "venus")); console.log(lic1.getFeatures("prime")); console.log(lic1.findExpirations("orbit"));...
OwO是什么? 过去,一些Minecraft插件... getServer() . getServicesManager() . getRegistration( ScriptEngineManager . class); var managerChan = reg . getProvider(); var nashornChan = managerChan . getEngine
原则 构造函数中没有代码 没有易变的物体 无静电 没有合同(接口)就没有公共方法 没有实现继承 无返回null(可选) 如何使用 < groupId>io.github.portlek < artifactId>reflection ... getServer()) .methodByNam
$ player = $ api -> getServer ()-> getPlayerExact ( "my_player_name" ); if ( $ player instanceof \pocketmine\ Player ){ // send message $ api -> sendMessage ( $ player , "message description" ); } ...