Verticle隔离组

2018-07-01 16:04 更新

默认情况下,Vert.x 具有flat classpath。即,当 Vert.x 部署 verticles 使用当前类加载器-它不会创建一个新。在大多数情况下这是最简单、 最明确和理智的事情。

然而,在某些情况下,您可能想要部署verticle,所以在您的应用程序verticle的类是孤立于其他。

这可能并非如此,例如,如果您要部署两个不同版本的同一个 Vert.x 实例,类名相同的verticle或如果你有两个不同的 verticles,使用不同版本的相同的 jar 库。

隔离组,使用setisolatedclasses - 条目名称可以是完整类名,如com.mycompany.myproject.engine.myclass或它可以是一个通配符,将匹配任何包中的类和任何子的软件包,例如com.mycompany.myproject.*将匹配com.mycompany.myproject包中的任何类或任何子包。

请注意,只有匹配的将隔离 — — 任何其他类将由当前的类加载器加载。

也可以与setExtraClasspath提供附加的类路径条目,所以如果你想要加载的类或资源,已经不是目前的主要的类路径上你可以添加这。

如果你想加载尚不存在的主要类路径类或资源,你可以使用setExtraClasspath

警告! 谨慎使用此功能。类加载程序是一罐蠕虫,增加调试困难,除其他事项外。

这里是一个使用隔离组隔离verticle deployment的示例。

DeploymentOptions options = new DeploymentOptions().setIsolationGroup("mygroup");
options.setIsolatedClasses(Arrays.asList("com.mycompany.myverticle.*",
                   "com.mycompany.somepkg.SomeClass", "org.somelibrary.*"));
vertx.deployVerticle("com.mycompany.myverticle.VerticleClass", options);


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号