GlassFish如何成为OSGi容器?

IAm*_*aja 3 java osgi glassfish java-ee

在研究OSGi和OSGi容器时,我偶然发现了这个问题,提到GlassFish是一个OSGi容器,我不得不说我很困惑.

这怎么可能?!?!

我的理解是OGS--一个兼容Java的应用服务器 - 有两个容器:

  • Web容器:您为Web应用程序和服务部署WAR文件的位置
  • App Container:为业务逻辑部署EJB的位置

OSGi捆绑包在哪里适合这种范例?!?OGS是否允许您将OSGi包部署到应用程序容器并将其视为EJB或其他内容?如果我对OGS的工作原理有误,请指正!提前致谢!

Ist*_*vai 5

OSGi是一个模块系统,允许添加/删除/升级不同的包,处理依赖关系,提供有关状态的运行时信息等.

当涉及到GlassFish(其中包含Apache Felix OSGi容器)时,应用程序服务器的不同功能(例如HTTP服务器,JMS服务器等)作为捆绑包实现.OSGi容器有基于控制台和Web的界面,您可以在其中启动,安装,删除服务(请参阅下面的PDF)

就Java EE应用程序而言,它们也可以与OSGI容器进行交互.例如,EJB可以作为OSGi服务导出,EJB也可以使用OSGi服务.

有关详细信息,请参阅http://glassfish.java.net/public/GF-OSGi-Features.pdf


Pet*_*ens 5

嗯,对OSGi是什么的一个相当完全的误解......

OSGi是一个框架,允许您组织代码,以便您可以从可重用的组件构建它,然后可以通过服务层进行协作(不再是Class.forName或XML!).

OSGi框架可以独立运行,它们在应用程序内运行,可以在WAR文件中运行,并且可以在应用程序服务器内运行.你甚至可以在OSGi内部的OSGi中运行OSGi,因为它不依赖于任何地方的静态.

OSGi Alliance为模块(bundle)指定了一种格式,以便模块可以指定它们的依赖关系.Alliance还指定了用于安装和管理模块的API.最后,它指定了大量在开发应用程序时很有用的接口.

Websphere,Glassfish,JBoss,Jonas都支持部署OSGi包.