Jetty 自动启动OSGI包

Jetty 自动启动OSGI包,jetty,osgi,equinox,osgi-bundle,Jetty,Osgi,Equinox,Osgi Bundle,我正在创建一个在Eclipse之外运行的无头OSGI服务器。我使用Jetty作为Servlet容器,Equinox作为OSGI容器。我正在使用org.eclipse.equinox.http.jetty捆绑包将jetty添加到OSGI中。如果我从osgi>提示符手动启动jetty和org.eclipse.equinox.http.registry,那么它将正常运行。但是,我希望它在无人参与的情况下运行,因此我需要在OSGi启动时自动(或至少以编程方式)加载这些捆绑包。我该怎么做 换句话说,如何自

我正在创建一个在Eclipse之外运行的无头OSGI服务器。我使用Jetty作为Servlet容器,Equinox作为OSGI容器。我正在使用
org.eclipse.equinox.http.jetty
捆绑包将jetty添加到OSGI中。如果我从
osgi>
提示符手动启动jetty和org.eclipse.equinox.http.registry,那么它将正常运行。但是,我希望它在无人参与的情况下运行,因此我需要在OSGi启动时自动(或至少以编程方式)加载这些捆绑包。我该怎么做


换句话说,如何自动启动OSGI包

又一次重新发明了轮子,但很好。看看ApacheKaraf是如何处理这一切的。顺便说一句,它是一个OSGi容器,支持在不同的OSGi运行时之间进行选择。 因此,在您的场景中,您需要有某种“main”来加载根捆绑包,并告诉它加载初始捆绑包集。对于Karaf,初始集由主类处理,主类是可配置的。 对于可能要部署的其他捆绑包,Karaf确实有一个Features deployer,它将在给定的“Features.xml”中安装所有捆绑包。它是一个描述符,告诉features服务从maven或obr存储库部署捆绑包

有关详细信息,请参阅。 有关Karaf的更多详细信息,请查看


以防万一,你会发现一个性病和一个最小的分发,可能适合你的需要

一旦您从osgi>提示符安装了bundle(或者最好开始使用gogo),那么安装是持久的。因此,当您重新启动框架时,捆绑包应该自动重新启动

如果您希望总是重新启动,有一些启动程序设置可以为您删除持久性信息,请参阅OSGi核心规范中的启动框架部分

一个有趣的可能性是使用bnd(工具)。在bndtools中,您可以使用
bndrun
文件开发、调试和测试应用程序。一旦你高兴了,你就可以将你的应用程序导出到一个可执行的JAR(比如java-jarmyapp.JAR)。这个可执行jar将自动启动包含所有包的框架


如果您想动态更新捆绑包,那么可以查看FileInstall。这有点简单,但适用于较小的应用程序(需要更多的细节。您首先是如何启动OSGi的?通常是负责启动OSGi框架的代码(“启动器”)还负责安装和启动初始捆绑包集。我尝试通过编程,而不是通过
osgi>
提示符。