3

我们使用 Equinox 作为我们应用程序的运行时。OSGi 的模块化非常棒,但在 JBoss 时代我怀念一件事:监控设施。JMX 是 JVM 中的监控标准,但 Equinox 似乎没有为其提供太多内置支持。

除了 Equinox Resource Monitoring项目,该项目自 2007 年以来似乎已经过时(并且没有退出孵化期),还有哪些选择?

有哪些其他 OSGi/Equinox 采用者用于监控基于 OSGi 的应用程序?其他 OSGi 实现呢?这对于触发迁移非常重要,以防例如 Felix+Karaf 提供更好的监控支持。

4

4 回答 4

3

有几个选项可用。Gemini Management为框架的 JMX 监控提供了 OSGi 标准的实现。

如果您想监控 Servlet 环境,您需要查看 Servlet 引擎提供的选项。我们在Gyrex中包含了 Jetty ,它提供了几个选项。我们还添加了更多的 JMX bean 来测量平均请求时间、关于最后一个错误的信息等等。

实现自己的 JMX bean 实际上并不困难。您可以ManagementFactory.getPlatformMBeanServer().registerMBean(...)从代码中的任何位置调用以注册 bean。看看我们的服务跟踪器实现,它为每个注册的特定类型的服务对象注册一个 JMX 监控 bean。

于 2012-07-12T17:43:03.287 回答
2

我推荐使用 Apache Karaf。您可以将它与 Felix 或 Equinox 一起使用。它提供了很多监控功能。只需启动 karaf 并连接 Jconsole。除了 JMX,它还有 Felix Webconsole 和一个很棒的命令行,也可以通过 ssh 使用。

于 2012-07-12T18:59:23.550 回答
1

我在谷歌搜索Equinox + JMX时发现了这个线程。由于这个线程来自 2012 年,其他人可能会在未来出现这个问题,因此是时候添加另一个适合我的解决方案了。

您可以轻松使用Aries JMX。您可以在下面找到 Aries 文档的总结。为此添加

  • 一个简单的捆绑包

    import java.lang.management.ManagementFactory;
    import javax.management.MBeanServer;
    import org.osgi.framework.BundleActivator;
    import org.osgi.framework.BundleContext;
    
    public class Activator implements BundleActivator {
        public void start(BundleContext context) throws Exception {
            MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
            context.registerService(MBeanServer.class.getName(), mbs, null);
        }
    
        public void stop(BundleContext context) throws Exception {}
        }
    }
    
  • 白羊座 JMX 捆绑包

  • Aries JMX API 包
  • 白羊座实用程序包

因此,可以通过例如 JConsole 访问 Equinox Container。

于 2015-12-09T18:18:56.870 回答
0

Apache Felix Web Console 是一个非常强大的工具,用于监控 OSGi 容器的状态。它也可以在 Equinox 中运行。

http://felix.apache.org/site/apache-felix-web-console.html

于 2012-07-12T13:38:24.493 回答