我最近关注的项目之一是Wildfly Swarm 。 最终,在今年的JBoss BOF Devoxx期间,我的考虑更改项目名称的请求没有通过(由于与著名的Docker Swarm发生冲突)。
那么什么是Wildfly Swarm?
简而言之,就是Wildfly应用程序服务器(包括我在内的许多开发人员选择的应用程序服务器),它分为几部分-(称为模块或分数),可供任何开发人员使用并组装新的模块化解决方案。 您将不再需要捆绑或安装整个应用程序服务器,只要您想要的层和功能即可。 您可以从几个子模块的列表中选择应用程序将要利用的子模块,提取它们的依赖关系,并将最终的jar应用程序与代码一起组装。 该模型与许多团队和开发人员使用Spring Boot所做的工作非常相似。
Wildfly和模块化–提前实现
值得一提的是,Wildfly是在其他技术或容器出现之前很早就对其模块化和相关基础架构进行投资的少数应用服务器之一。 这些年来,JBoss / Wildfly代码库在为提供带有可插拔模块的灵活内核方面做出了很大的改变,这是我们多年来需要赞扬其开发和设计团队的事情。 如果您使用Wildfly或JBoss从事过任何项目,那么您已经接触过它的模块架构以及简化的类和库加载功能。 因此,应用程序服务器和组件已经通过设计和构造实现了模块化,唯一缺少的是使其正式发布并向最终开发人员提供一些额外的工具和API,以充分利用此功能。 那就是Wildfly Swarm。 开发仍在进行中。 官方网站可以发现这里的例子一个长长的清单和代码,可以发现在这里 ,官方文档,可以发现在这里 ,Twitter帐户在这里 ,可以找到邮件列表在这里 。
ShrinkWrap –出色的API
在开发方面,使用Wildfly Swarm的优点之一是使用了非常方便的,出色的书面API IMHO,称为ShrinkWrap 。 ShrinkWarp源自Arquillian Project,它是您用于动态构建“可测试”存档的API,该API可即时部署到应用服务器运行时。 在Wildfly Swarm的环境中非常适合,您可以在其中以编程方式编写最终应用程序(还有其他方法)。 当开发基于Arquillian的测试时,我一直喜欢ShrinkWrap的美丽和简单,我也很高兴看到它也“逃脱”了其他工具和技术。
小专家的贡献
当我浏览这些示例时,尝试学习Wildfly Swarm并与其一起玩时,我注意到从Maven的角度来看,还缺少一些小东西。 由于最终您可以将很多模块(分数)定义为依赖项,因此为了提出最终解决方案,我缺少了一些帮助(以部分物料清单的形式),以便您可以导入您的最终POM,然后选择您可能喜欢的任何依赖项。 我决定创建一个问题并提出一个很小的请求,并提出一个BOM。 开发团队对此非常满意,在这一方面进展很快,而最新版本的Wildfly Swarm为所有Maven用户提供了新的BOM。
- 我有一个小型演示项目(没什么花哨的东西,只是为了展示一些事情或将来与其他人一起玩)。 你可以在这里找到它。
主要思想是,在使用Maven构建的任何新的基于Wildfly Swarm的项目中,您现在都可以导入特定的BOM(名称bom),并且可以具有具体列表以及可用馏分(组分)的版本。
<dependencies><dependency><groupId>org.wildfly.swarm</groupId><artifactId>weld</artifactId></dependency><dependency><groupId>org.wildfly.swarm</groupId><artifactId>jaxrs</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.wildfly.swarm</groupId><artifactId>bom</artifactId><version>${wildfly.swarm.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
- 您可以在此处找到完整的简单pom。
翻译自: https://www.javacodegeeks.com/2016/01/wildfly-swarm-towards-maturity-small-contribution.html