OSGi是一个模块化架构,JavaBeans是一个组件架构。有什么不同?
发布于 2011-09-14 03:07:24
OSGi和Java Beans之间的主要区别在于类加载器的工作方式。在标准的.jar文件或EJB中,rt.jar文件或EJB等效物维护类路径。此外,如果您使用容器将应用程序部署到其中,则可能会有多个类路径维护机制导致问题。因此,例如,在创建.war文件时,通常会创建一个包含所有.war的.jar依赖项的lib目录。如果您的应用程序中只有一个war或.jar,这并不是很糟糕。但是想象一下一个大型的企业部署,其中100个EJB都包含apache-commons!最终得到100个apache-commons实例,它们都运行在同一个容器中,消耗资源。
在OSGi中,您将每个.jar文件(我们将其称为bundles,因为现在是OSGi )部署到OSGi容器中。每个.jar文件公开(导出)它希望其他包使用的包,并标识包的版本。此外,每个捆绑包还明确声明(导入)它需要从其他捆绑包中工作的包。然后,OSGi容器将管理所有这些导出,并将它们与适当的导入进行匹配。现在,您有了apache-commons可供您想要提供的每个EJB使用。您已经删除了/lib目录,现在您的应用程序占用的资源更少了。
在您的问题中,您询问了组件体系结构和模块化体系结构之间的区别。模块化是指这样的过程,即使每个捆绑包都有自己的部署单元,并允许它与其他捆绑包对话,而不是将它们全部打包成一个庞大的.jar文件。
https://stackoverflow.com/questions/7376730
复制相似问题