gpt4 book ai didi

java - 当使用 JNI 的 OSGi 服务在使用时未注册时会发生什么?

转载 作者:行者123 更新时间:2023-12-04 06:56:52 25 4
gpt4 key购买 nike

据我了解,OSGi 服务可以随时注销,包括在使用时。

考虑一个在内部进行长时间运行的 JNI 调用的 OSGi 服务。在执行 JNI 调用时,OSGi 未注册该服务。

是否允许 JNI 调用完成或中途终止?如果它只是一个普通的非 jni 长时间运行的 Java 调用呢?该调用会被允许完成执行还是 OSGi 会立即终止一切并取消注册?

在这种情况下,预期的行为是什么?预期行为是否取决于服务是否使用“跟踪器”加载?

SG

最佳答案

我认为即使使用“正常”(非 JNI)服务,OSGi 也不会停止任何已经在进行的处理。事实上,如果一个 bundle 在它被取消注册后以某种方式保留对服务实例的引用(它不应该这样做),它仍然可以调用该对象上的方法(这些方法是否仍然有效完全取决于服务实现)。

OSGi 服务没有“魔法”。 bundle 生命周期仅控制在服务注册表中注册和取消注册的内容。一旦您有了对服务实现的引用,它就只是普通的旧 Java 方法调用。

所以,回答你的问题,除非包(或服务)本身做任何事情来终止正在进行的 Activity ,否则长时间运行的调用将完成。

关于java - 当使用 JNI 的 OSGi 服务在使用时未注册时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2462918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com