法国作家 安托万·德·圣埃克苏佩里 的这句话是为了证实通常少即是多。对于建筑师、艺术家、设计师、作家、跑步者、软件开发人员或任何其他职业来说都是如此。简单、极简主义和减少垃圾总是有很长的路要走,并且有几个优点,而不是臃肿的东西。
什么是野蝇群?
WildFly 是一个轻量级、灵活、功能丰富、符合 Java EE 7 的应用程序服务器。 WildFly 9 甚至引入了一个 27MB 的 Servlet-only 发行版 。这些非常适合您的企业和 Web 应用程序。
WildFly Swarm 的得分更高一些。从 公告 :
WildFly Swarm 是一个支持 WildFly 9.x 的新 sidecar 项目,可以解构 WildFly AS 并将其粘贴回您的应用程序中,以创建一个独立的可执行 jar。
野蝇群
Java EE 应用程序的典型应用程序开发模型是创建 EAR 或 WAR 存档并将其部署在应用程序服务器中。所有依赖项(例如 Java EE 实现)都打包在应用程序服务器中,并提供应用程序类所需的功能。可以部署多个存档,它们都共享相同的库。这是一个很好理解的模型,并且在过去几年中一直在使用。
WildFly Swarm 改变了局面,它创建了一个“fat jar”,将所有依赖项打包在一个 JAR 文件中。这包括 WildFly 的极简版本、任何必需的依赖项,当然还有应用程序代码本身。该应用程序可以简单地使用
java -jar
运行。
每个 fat jar 都可能是一个微服务,然后可以独立升级、替换或扩展。每个 fat jar 通常都遵循单一职责原则,因此只会打包所需的依赖项。每个 JAR 都可以使用多语言持久性,并且只使用所需的持久性机制。
给我看代码!
通过添加 Maven 依赖项和插件,可以将 Java EE 应用程序打包为 WildFly Swarm fat jar。 github.com/arun-gupta/wildfly-samples/tree/master/swarm 提供了一个简单 JAX-RS 示例的完整源代码。
WildFly Swarm Maven 依赖
在
pom.xml
中添加以下 Maven 依赖项:
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-jaxrs</artifactId>
<version>${version.wildfly-swarm}</version>
<scope>provided</scope>
</dependency>
WildFly Swarm Maven 插件
在
pom.xml
中添加以下 Maven 插件:
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-jaxrs</artifactId>
<version>${version.wildfly-swarm}</version>
<scope>provided</scope>
</dependency>
创建 WildFly Swarm Fat Jar
可以通过调用标准 Maven 目标轻松创建 fat jar:
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-jaxrs</artifactId>
<version>${version.wildfly-swarm}</version>
<scope>provided</scope>
</dependency>
这会使用通常的 Maven 约定生成一个 JAR 文件,并在末尾附加
-swarm
。
我们示例
中生成的 WAR 文件名为
swarm-1.0-SNAPSHOT-swarm.jar
。
生成的 WAR 文件约为 30MB,有 134 个 JAR(全部在
m2repo
目录中)和 211 个类。应用程序代码捆绑在
app/swarm-1.0-SNAPSHOT.war
中。
运行 WildFly Swarm Fat Jar
这个 far jar 可以运行为:
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-jaxrs</artifactId>
<version>${version.wildfly-swarm}</version>
<scope>provided</scope>
</dependency>
响应可以验证为:
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-jaxrs</artifactId>
<version>${version.wildfly-swarm}</version>
<scope>provided</scope>
</dependency>
WildFly Swarm Release 博客 引用了很多关于 Servlet 、 JAX-RS with ShrinkWrap 、 DataSource via Deployment 、 Messaging 和 JAX-RS 等的博客。
WildFly Swarm 后续步骤
这只是 1.0.0.Alpha1 版本,所以请随时试用示例并通过 提交问题 向我们提供反馈。
您拥有所有 WildFly 子系统的强大功能,甚至可以创建可嵌入的 Java EE 容器,如 发布博客 所示:
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-jaxrs</artifactId>
<version>${version.wildfly-swarm}</version>
<scope>provided</scope>
</dependency>
后续博客将展示如何使用 WildFly Swarm 轻松创建微服务。
WildFly Swarm 保持联系
您可以通过 WildFly HipChat 聊天室、 Twitter 上的@wildflyswarm 或通过 GitHub Issues 了解该项目。