gpt4 book ai didi

java - 尽管 karaf 实例被杀死,但 OSGi 组件工厂对象被创建了两次

转载 作者:行者123 更新时间:2023-11-30 07:18:11 24 4
gpt4 key购买 nike

我在我的项目中使用 OSGi 组件工厂概念,它按预期工作。请查找我已完成的步骤。

步骤:

  1. 使用ssh命令登录karaf[因为不是root用户所以我在karaf中创建了一个实例]。

  2. 已执行 scr:list。它显示我已部署的服务。由于我使用了组件工厂,对象是由 OSGi 框架创建的并按预期工作。

  3. 使用“shutdown”命令关闭 karaf。
  4. 使用 ssh 命令再次登录 karaf。
  5. 执行 scr:list 后,对象将被复制。即对象再次创建一次并显示两次。

当 shutdown karaf 停止时,deactivate 方法被调用,相应的 java 进程被终止。一旦我再次启动 karaf 进程,就会创建一个新进程[我已经通过检查 java 进程的 PID 验证了这一点]。我提出这个问题的原因如下

  1. 由于我使用组件工厂,内存管理应该自动处理。 IE)如果我关闭 karaf 实例对象应该被释放并被垃圾收集。
  2. 虽然我的应用程序设计得很差,但关闭 java 进程后 scr:list 不应显示对象两次。即)java进程关闭后应清除相应的内存。最终它不应该影响新创建的进程。

环境:RHEL 6.5

Apache-karaf:3.0.3

JRE:1.7-u 79

最佳答案

这可能是一个已知的错误。我假设您正在使用功能文件创建默认配置?这似乎在当前的 karaf 版本的托管服务工厂中被打破了。因此,如果是这种情况,请避免在功能文件中定义默认配置。

关于java - 尽管 karaf 实例被杀死,但 OSGi 组件工厂对象被创建了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38039906/

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