“完美无缺,不是在没有其他可添加的东西时,而是在没有其他东西要带走时实现的” Antoine de Saint-Exupery

法国作家安托万·德·圣艾修伯里 ( Antoine de Saint-Exupery )的这句话是为了证明通常少花钱多。 对于建筑师,艺术家,设计师,作家,跑步者,软件开发人员或任何其他专业而言,都是如此。 简洁,极简主义,减少工作量总有很长的路要走,并且相对于肿的事物有很多优点。

什么是WildFly Swarm?

WildFly是一款轻巧,灵活,功能丰富且符合Java EE 7的应用程序服务器。 WildFly 9甚至引入了仅27MB的Servlet发行版 。 这些非常适合您的企业和Web应用程序。

WildFly Swarm将缺口提高了一点。 从公告中 :

WildFly Swarm是一个新的sidecar项目,支持WildFly 9.x,以实现对WildFly AS的解构并将其与应用程序一起粘贴回去,以创建一个自包含的可执行jar。 苍蝇群

Java EE应用程序的典型应用程序开发模型是创建EAR或WAR归档文件并将其部署在应用程序服务器中。 所有依赖项(例如Java EE实现)都打包在应用程序服务器中,并提供应用程序类所需的功能。 可以部署多个档案,它们都共享相同的库。 这是一个很好理解的模型,并且已在过去几年中使用。

WildFly Swarm将表旋转到它创建“胖罐”的地方,该胖罐将所有依赖项打包在JAR文件中。 这包括WildFly的极简版本,任何必需的依赖关系,以及应用程序代码本身。 该应用程序可以简单地使用java -jar运行。

每个胖子罐可能都是微服务,然后可以独立升级,替换或扩展。 每个胖罐通常会遵循单一责任原则,因此只会打包所需的依赖项。 每个JAR都可以使用多语言持久性,并且仅使用所需的持久性机制。

给我看看代码!

通过添加Maven依赖项和插件,可以将Java EE应用程序打包为WildFly Swarm胖子罐。 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插件:

<plugin><groupId>org.wildfly.swarm</groupId><artifactId>wildfly-swarm-plugin</artifactId><version>${version.wildfly-swarm}</version><executions><execution><phase>package</phase><goals><goal>create</goal></goals></execution></executions>
</plugin>

创建WildFly Swarm胖子罐

通过调用标准Maven目标,可以轻松创建胖子罐:

maven package

这将使用通常的Maven约定生成一个JAR文件,并在末尾附加-swarm 。 在我们的示例中生成的WAR文件名是swarm-1.0-SNAPSHOT-swarm.jar

生成的WAR文件约为30MB,具有134个JAR(全部位于m2repo目录中)和211个类。 该应用程序代码捆绑在app/swarm-1.0-SNAPSHOT.war

运行WildFly Swarm胖子罐

此jar可以运行为:

swarm> java -jar target/swarm-1.0-SNAPSHOT-swarm.jar
12:27:10,622 INFO  [org.jboss.msc] (main) JBoss MSC version 1.2.4.Final
12:27:10,739 INFO  [org.jboss.as] (MSC service thread 1-6) WFLYSRV0049: WildFly Core 1.0.0.CR1 "Kenny" starting
2015-05-06 12:27:11,185 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 11) WFLYSEC0002: Activating Security Subsystem
2015-05-06 12:27:11,189 INFO  [org.jboss.as.security] (MSC service thread 1-10) WFLYSEC0001: Current PicketBox version=4.9.0.Beta2
2015-05-06 12:27:11,194 INFO  [org.wildfly.extension.io] (ServerService Thread Pool -- 13) WFLYIO001: Worker 'default' has auto-configured to 16 core threads with 128 task threads based on your 8 available processors
2015-05-06 12:27:11,199 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 12) WFLYNAM0001: Activating Naming Subsystem
2015-05-06 12:27:11,246 INFO  [org.jboss.as.naming] (MSC service thread 1-12) WFLYNAM0003: Starting Naming Service
2015-05-06 12:27:11,319 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-8) WFLYUT0003: Undertow 1.2.4.Final starting
2015-05-06 12:27:11,319 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 14) WFLYUT0003: Undertow 1.2.4.Final starting
2015-05-06 12:27:11,337 INFO  [org.xnio] (MSC service thread 1-7) XNIO version 3.3.1.Final
2015-05-06 12:27:11,343 INFO  [org.xnio.nio] (MSC service thread 1-7) XNIO NIO Implementation Version 3.3.1.Final
2015-05-06 12:27:11,369 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-13) WFLYUT0012: Started server default-server.
2015-05-06 12:27:11,409 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-8) WFLYUT0006: Undertow HTTP listener default listening on /127.0.0.1:8080
2015-05-06 12:27:11,543 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Core 1.0.0.CR1 "Kenny" started in 855ms - Started 64 of 70 services (13 services are lazy, passive or on-demand)
2015-05-06 12:27:11,570 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0027: Starting deployment of "swarm-1.0-SNAPSHOT.war" (runtime-name: "swarm-1.0-SNAPSHOT.war")
2015-05-06 12:27:11,724 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0018: Host default-host starting
2015-05-06 12:27:11,906 INFO  [org.jboss.resteasy.spi.ResteasyDeployment] (MSC service thread 1-14) Deploying javax.ws.rs.core.Application: class org.wildfly.samples.swarm.MyApplication
2015-05-06 12:27:11,923 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-14) WFLYUT0021: Registered web context: /
2015-05-06 12:27:11,944 INFO  [org.jboss.as.server] (main) WFLYSRV0010: Deployed "swarm-1.0-SNAPSHOT.war" (runtime-name : "swarm-1.0-SNAPSHOT.war")

响应可以验证为:

target> curl -v http://127.0.0.1:8080/resources/resource
* Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
> GET /resources/resource HTTP/1.1
> User-Agent: curl/7.37.1
> Host: 127.0.0.1:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Type: application/octet-stream
< Content-Length: 12
< Date: Wed, 06 May 2015 19:29:10 GMT
<
* Connection #0 to host 127.0.0.1 left intact
hello swarm!

WildFly Swarm Release博客引用了许多有关Servlet的博客, 带有ShrinkWrap的JAX-RS , 通过Deployment的数据源 , Messaging和JAX-RS等等。

WildFly Swarm下一步

该版本仅为1.0.0.Alpha1版本,因此请随意尝试示例并通过提出问题给我们提供反馈。

您拥有所有WildFly子系统的功能,甚至可以创建可嵌入的Java EE容器,如发行博客中所示:

public class Main {public static void main(String[] args) throws Exception {Container container = new Container();container.subsystem(new MessagingFraction().server(new MessagingServer().enableInVmConnector().topic("my-topic").queue("my-queue")));// Start the containercontainer.start();JaxRsDeployment appDeployment = new JaxRsDeployment();appDeployment.addResource(MyResource.class);// Deploy your JAX-RS appcontainer.deploy(appDeployment);// Create an MSC deploymentServiceDeployment deployment = new ServiceDeployment();deployment.addService(new MyService("/jms/topic/my-topic" ) );// Deploy the servicescontainer.deploy( deployment );}
}

随后的博客将展示如何使用WildFly Swarm轻松创建微服务。

WildFly Swarm保持联系

您可以通过WildFly HipChat会议室, Twitter上的@wildflyswarm或GitHub Issues来跟上该项目。

翻译自: https://www.javacodegeeks.com/2015/05/wildfly-swarm-building-microservices-with-java-ee.html

WildFly Swarm:使用Java EE构建微服务相关推荐

  1. swarm:pending_WildFly Swarm:使用Java EE构建微服务

    swarm:pending "完美无缺,不是在没有其他可添加的东西时,而是在没有其他东西要带走时实现的" Antoine de Saint-Exupery 法国作家安托万·德·圣艾 ...

  2. WildFly Swarm –将Java EE应用程序部署为独立的Jar

    WildFly Swarm为将Java EE应用程序部署为独立的Jar文件提供了一种简单的解决方案. 这使得部署应用程序特别是REST或Web服务非常容易. Swarm在这方面与Spring Boot ...

  3. 开课吧Java:构建微服务时的三大常见错误

    构建分布式系统相当复杂,每个人对构建微服务也都有不同的见解.我们在建立微服务架构时,经常会遇到一些问题,这也是我们常见的错误. 1.定制化构建太多 微服务架构中各服务间的通信往往正是麻烦的来源.我们选 ...

  4. Java微服务开发指南-使用Dropwizard构建微服务

    Dropwizard的历史要早于Spring Boot和WildFly Swarm,它最早是在2011.12发布的v0.1.0版本,在本文编写的过程中,它已经发布了v0.9.2版本,而v1.0.0版本 ...

  5. 秒杀springboot——未来轻量级高性能的Java云原生微服务框架来啦

    秒杀springboot--未来轻量级高性能的Java云原生微服务框架来啦 引子 自2003年Rod.Juergen 和 Yann开发并发布Spring项目后,J2EE 迎来了新的开始.在 2013 ...

  6. 用Go语言构建微服务(1)简介和基本原理

    作者简介: 在这个博客系列中,将使用Go编程语言构建微服务,并逐步添加必要的集成,以使它们在Spring Cloud / Netflix OSS环境中,很好地运行在Docker swam上. 如果您不 ...

  7. 使用Quarkus在Openshift上构建微服务的快速指南

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! [重磅]到底是什么野生海鲜美味,惹得人们都往泥瓦匠老家买? 作者 | 康仔 来源 | 公众号 ...

  8. Spring Cloud构建微服务架构:分布式服务跟踪(整合zipkin)【Dalston版】

    通过上一篇<分布式服务跟踪(整合logstash)>,我们虽然已经能够利用ELK平台提供的收集.存储.搜索等强大功能,对跟踪信息的管理和使用已经变得非常便利.但是,在ELK平台中的数据分析 ...

  9. Spring Cloud构建微服务架构(七)消息总线(续:Kafka)

    Spring Cloud Bus除了支持RabbitMQ的自动化配置之外,还支持现在被广泛应用的Kafka.在本文中,我们将搭建一个Kafka的本地环境,并通过它来尝试使用Spring Cloud B ...

最新文章

  1. android使用webview上传文件,Android项目中如何在webview页面中上传文件
  2. txt文件分解为固定条数的文件
  3. 想写一篇关于.net下COM工作原理的文章
  4. java 用于xcopy复制_java调用copy复制子文件夹及文件到指定目录(非xcopy)
  5. 如何优化增强第三方库?
  6. 移动Oracle的用户表空间文件方法
  7. 计算机专业职称入深户,最近深圳很火的职称入户,到底要选什么职称?
  8. ajax传输 基础一
  9. ASP.NET程序如何防止被注入(整站通用)
  10. Spring整合Struts2,Hibernate的xml方式
  11. iOS底层探索之dyld(上):动态链接器流程分析
  12. android:DDMS查看Threads
  13. Java 反射Reflection总结二
  14. linux mysql 客户端 服务端_MySQL客户端和服务器端工具集
  15. 盘点17个能帮助企业运营完美服务的AI聊天机器人
  16. mysql中添加字段
  17. 计算机蓝屏无法启动不了系统怎么办,电脑开机蓝屏死机,无法进入系统怎么办?...
  18. 基于Revel开发的组件化代码生成器
  19. 招商银行校招笔试通过技巧
  20. kubernetes(4)Pod的核心概念、Pod的调度

热门文章

  1. “老师,我写着写着就 强制交卷了……”
  2. 2021,春节联欢会
  3. oracle 更新参数,Oracle动态、静态参数参数修改规则
  4. php如何直接使用iview,iview安装使用
  5. stm32编程入门_电子设计与单片机编程书籍资料推荐
  6. python模板模式_python-模板方法模式
  7. 怎么清理句柄_JAR文件句柄:混乱后清理!
  8. pmml_再访PMML
  9. javadocs_不会吸引人的JavaDocs源样本
  10. fest556_AssertJ Fest Hamcrest