我们刚刚发布了新的JBossAS7.0.0.Beta1(大家做得太棒了!)
虽然我对这个新的运行时/平台并没有那么投入(像JBossAS5和JBossAS6那样),但我仍然密切关注着它们是如何做的。我得说,与新的概念一起工作真的是一种乐趣,而且添加任何新事物都超级简单,这意味着我们熟悉的老JBoss用户体验 [1] 将会继续存在!
借用同事的一句话,让我们把代码放在嘴上。所以,让我列出一些建议,看看我们可以用新的JBossAS7做些什么。注意:这些都是实验性的,因此不提供任何保证 :-)
回到JBoss2?
正如可能的一些人还记得,JBossAS曾经也随附Jetty作为Web容器。由于我已经开始研究Weld和Jetty7/8集成,我开始思考要恢复那个旧Web容器选项需要做些什么。
结果,正如我所预期的那样,实现hello-world功能非常简单。但由于我的目标是能够部署Weld的Permalink示例,因此需要更多的工作来设置JSF和CDI。特别是JSF有点问题,因为所有这些静态工厂等,更不用说我对JSF知之甚少。而CDI集成则相对简单,因为它与我之前为纯Weld servlet集成所做的工作没有太大区别。
代码在这里:https://github.com/alesj/jboss-as/tree/jetty,但鉴于JBossAS7的快速进步,它已经远远落后于当前的upstream master。因此,重新建立它并不那么简单。所以留在这里作为原型。:-)
Grapher2卷土重来
另一个历史遗留问题被重新启用。:-)
这是我用来检查MC依赖项的一些操作。但通过一些重构和更好的面向对象实践,我轻松地将它转换成了一个通用的依赖项显示Web应用程序[2]。
由于JBossAS7的新类加载层是模块化的,了解其中一些依赖项可能是一件好事。这正是这个工具帮到你的地方。目前,我迅速添加了两个“命令”
抽我的手指
如前所述,新的类加载层是100%模块化的。查看JBossAS7 standalone.sh,你可以看到整个应用程序服务器实际上是一个模块启动的,然后它会引入其依赖项,如此类推。那么,如果我们只提供这个单个jar包和一些描述文件,使发行版只有(该-jar-size)大小呢?
这实际上非常容易做到。整个模块加载都留给了ModuleLoader类,这意味着如果我们正确实现了它,它就能够远程拉取我们的模块。
这是执行此操作的远程ModuleLoader类
这是我实验性的发行版——只有377kb!:-)
(这从googlecode项目的实验性仓库中拉取模块)
由于子系统和服务已经是按需提供的,你可以用同样的方式处理模块。你也可以简单地从你的磁盘上删除现有的模块,远程ModuleLoader会再次为你下载它,使得更新和共享变得非常容易。
好吧,现在回到我的Weld工作,然后继续到7.0.0.Beta2!
[1] —— 作为用户(大约5年前),我总是喜欢可以轻松更改默认AS行为,或添加新事物;即SpringDeployer ;-)
[2] —— 嗯,我知道,默认布局很糟糕 :-)