![JAR search and dependency download from the Maven repository](/logo.png)
com.alibaba.jvm.sandbox.api.ModuleLifecycle Maven / Gradle / Ivy
package com.alibaba.jvm.sandbox.api;
/**
* 沙箱模块生命周期
*
* @author [email protected]
*/
public interface ModuleLifecycle {
/**
* 模块加载,模块开始加载之前调用!
*
* 模块加载是模块生命周期的开始,在模块生命中期中有且只会调用一次。
* 这里抛出异常将会是阻止模块被加载的唯一方式,如果模块判定加载失败,将会释放掉所有预申请的资源,模块也不会被沙箱所感知
*
*
* @throws Throwable 加载模块失败
*/
void onLoad() throws Throwable;
/**
* 模块加载完成,模块完成加载后调用!
*
* 模块完成加载是在模块完成所有资源加载、分配之后的回调,在模块生命中期中有且只会调用一次。
* 这里抛出异常不会影响模块被加载成功的结果。
*
*
* 模块加载完成之后,所有的基于模块的操作都可以在这个回调中进行
*
*/
void loadCompleted();
/**
* 模块卸载,模块开始卸载之前调用!
*
* 模块卸载是模块生命周期的结束,在模块生命中期中有且只会调用一次。
* 这里抛出异常将会是阻止模块被卸载的唯一方式,如果模块判定卸载失败,将不会造成任何资源的提前关闭与释放,模块将能继续正常工作
*
*
* @throws Throwable 卸载模块失败
*/
void onUnload() throws Throwable;
/**
* 模块激活
*
* 模块被激活后,模块所增强的类将会被激活,所有{@link com.alibaba.jvm.sandbox.api.listener.EventListener}将开始收到对应的事件
*
*
* 这里抛出异常将会是阻止模块被激活的唯一方式
*
*
* @throws Throwable 模块激活失败
*/
void onActive() throws Throwable;
/**
* 模块冻结
*
* 模块被冻结后,模块所持有的所有{@link com.alibaba.jvm.sandbox.api.listener.EventListener}将被静默,无法收到对应的事件。
* 需要注意的是,模块冻结后虽然不再收到相关事件,但沙箱给对应类织入的增强代码仍然还在。
*
*
* 这里抛出异常将会是阻止模块被冻结的唯一方式
*
*
* @throws Throwable 模块冻结失败
*/
void onFrozen() throws Throwable;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy