One of the primary benefits of BOF is hot deployment of updates. But do you get hot deployment for all BOF elements? The answer is no, and you need to understand when you do and when you don’t.
If you look at the BOF class loaders you will see that all module-specific loaders share a common parent – the BOF shared loader. The shared loader is primarily intended to contain module interfaces. There is a second supported case though – non-sandboxed Java libraries. These are used to share implementation jars across modules. This is not a recommended practice, but it does avoid potential duplication of class files in memory (the only reason that it is supported).
It is fatal to update interfaces in a running VM in many cases and ill advised in others, so the expectation is that classes in the shared loader are not dynamic. Anything that is loaded by a module-specific loader is subject to hot deployment, but anything loaded by the shared loader does not enjoy hot deployment. The main reason for this is that invalidating this class loader would mean invalidating all existing module-specific class loaders, possibly resulting in duplicates for some time as modules are garbage collected which could be a significant memory cost. Regardless of the reason, it is a fact.
The take home lesson is that if you use non-sandboxed Java libraries you will not get hot deployment for those libraries. At the cost of some class file duplication you can get all the BOF benefits including hot deployment if you sandbox your Java libraries, and we strongly recommend this. Note that an update to a sandboxed Java library is propagated to all consuming modules via hot deployment.
As an aside, be careful to avoid caching module instances because these instances are immune to hot deployment.
分享到:
相关推荐
"hotDeployment"这个概念对于开发人员来说是至关重要的,因为它极大地提高了开发效率。当我们谈论Spring Boot的热部署(Hot Deployment)时,我们指的是在开发过程中,当源代码发生更改时,应用能够自动检测到这些...
IS-IS Deployment in IP Networks, 2002
A key finding is that the frequency of deployment does not directly affect developer productivity or software quality. We argue that this finding is due to the fact that increasing the frequency of ...
Oracle Solaris 11.2 Planning for Network Deployment in Oracle Solaris 11.2-32
8911A-EN_Installation_&_Deployment_in_CRM_Student_Manual.pdf
web deployment project web deployment project web deployment project web deployment project web deployment project
dot_40121_DS1 Application Deployment Plan – ICFWyoming.pdf
Deploy and manage today's essential services on an enterprise-class, open operating system About This Book * Configure and manage Linux servers in varying scenarios and for a range of business ...
The Deployment Pipeline
"无状态应用管理Deployment" Deployment 是 Kubernetes 中的一种资源对象,用于管理无状态应用程序的部署。下面是关于无状态应用管理 Deployment 的知识点: 1. Deployment 的基本概念 Deployment 是一种控制器...
We start by introducing Continuous Integration (CI), deployment, and delivery as well as providing an overview of the tools used in CI. You'll then create a web app and see how Git can be used in a CI...
### 基于J2EE在分布式环境下的底层结构的自动动态配置的应用 #### 概述 随着近年来组件化企业应用开发技术的显著增长,基于Java 2 Platform, Enterprise Edition (J2EE)架构的应用程序变得越来越普遍。...
"Altiris安装配置学习教程(三)- 安装配置Deployment Server"是针对如何设置和管理Altiris Deployment Server的详细指南。Deployment Server是Altiris的核心组件,它负责执行软件分发、系统迁移、更新和维护任务。 ...
Kubernetes is one of the largest open source projects in the world, according to data from GitHub. It’s so big that the tools to manage the development and deployment of Kubernetes are constantly ...
WebDeployment技术是与Visual Studio 2005紧密集成的一种发布和部署Web应用程序的方法。它极大地简化了将ASP.NET应用程序从开发环境推送到生产环境的过程,使得开发者可以更高效地管理他们的Web项目。 在Visual ...
Conventions Used in This Book Using Code Examples Safari® Enabled How to Contact Us Ian's Acknowledgments Chris's Acknowledgments Chapter 1. Hello, WPF Section 1.1. WPF from Scratch ...
首先,文件标题和描述中提到了“Connected Vehicle Pilot Deployment Program Phase 1, Application Deployment – Tampa (THEA)”,这表明文档涉及的是一个关于连接车辆技术(Connected Vehicle)的试点部署项目。...