繁体   English   中英

GlassFish如何成为OSGi容器?

[英]How is GlassFish an OSGi container?

在研究OSGi和OSGi容器时,我偶然发现了这样一个问题,提到将GlassFish作为OSGi容器,我不得不感到困惑。

这怎么可能?!?!

我的理解是OGS(一种Java兼容的应用服务器)具有2个容器:

  • Web容器:在其中部署Web应用程序和服务的WAR文件
  • 应用程序容器:您在其中部署EJB的业务逻辑

OSGi捆绑软件在哪里适合这种范例?! OGS是否允许您将OSGi捆绑软件部署到应用容器并将其像EJB一样对待? 如果我对OGS的工作方式有误,请纠正我! 提前致谢!

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

嗯,对OSGi是什么完全误解了...

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

OSGi框架可以独立运行,可以在应用程序中运行,可以在WAR文件中运行,并且可以在应用程序服务器中运行。 您甚至可以在OSGi中的OSGi中运行OSGi,因为它不依赖于任何静态变量。

OSGi联盟指定模块(捆绑包)的格式,以便模块可以指定其依赖性。 联盟还指定了用于安装和管理模块的API。 最后,它指定了大量在开发应用程序时有用的接口。

Websphere,Glassfish,JBoss和Jonas均支持部署OSGi捆绑软件。

Glassfish在内部使用OSGi提供您提到的功能。 除此之外,您可以在上面部署自己的OSGi捆绑软件。 请参见https://wikis.oracle.com/display/GlassFish/OSGi尽管OSGi与Java EE之间没有真正的联系。 您还不能在Glassfish的OSGi捆绑软件中使用JavaEE。 对于这种情况,有一些像OSGi上的Weld这样的倡议: http ://www.slideshare.net/TrevorReznik/weldosgi-injecting-easiness-in-osgi尽管它们还没有真正做好生产准备。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM