Java EE 6 应用与 OSGi

3
我开发了一个基于JSF,EJB和JPA的应用程序。JSF部分使用ManagedBeans和Facelets,位于war-module中,而我的EJB在ejb-module中。它不是什么大事,可以说有20页、15个ManagedBeans以及一些实体和EJB。这是我的毕业论文的一部分,其中要求我将此系统模块化,并且我应该使用OSGi技术来实现。
我的OSGi知识几乎为零,在几个小时的谷歌搜索后我没有取得任何进展。所以我想问你,你会如何将这个应用程序划分为模块?你能指点我一些教程或文章,在其中描述这样的过程吗?因为我没有找到任何适合我的情境的内容。
这是一个管理大学学生项目的应用程序。所以有两个角色,教师和学生。他们都可以创建项目,教师确认他们,学生提交他们。
以下是我的项目结构:

ejb module war module

当然,我不希望您给我整个解决方案,但如果您能给我一些起点,我会很高兴。
非常感谢!
1个回答

2
简而言之,OSGI模块被提供为捆绑包,可以在不干扰应用程序的其他部分的情况下启动、停止和修改。
当您将场景拆分为捆绑包时,您将拥有:
1. 服务(在您的情况下为EJB) 2. ServiceLocator(将由客户端(例如JSF)使用,这可以是客户端本身的一部分) 3. 客户端(在您的情况下为JSF)
i. 根据项目的复杂程度,您还可以将Web拆分为单独的捆绑包,如视图、dao等,但在您的情况下我认为这不是必需的。
4. 根据您的应用程序中可能具有的公共代码,您还可以拥有一个公共捆绑包。
学习Java EE和OSGI的好地方是@ Oracle Wiki

谢谢你总结得这么好。我会按照你的建议去做,但我还有一个问题。你认为将我的应用程序转换为OSGi项目需要多长时间?因为我的时间快用完了,所以我想要一些估计:-)非常感谢你的回答。 - Petr Mensik
别担心,应该不需要超过一两天就能让它为您的项目工作 :) - mprabhat
如果您使用的是Glassfish,那应该会更容易,因为Oracle Wiki上的大多数示例都是关于Glassfish的。 - mprabhat
很酷,我正在使用Glassfish :-) 再次感谢 :-) - Petr Mensik
请在表示“总之”的时候使用单词“nutshell”,而不是“n u s h e l l”,因为现在有一个新的编程 shell 叫做“NuShell”-- 谢谢! - Mark Stewart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接