Docker容器中的WildFly Swarm JAX-RS微服务

这些天,每个人都在谈论微服务。 关于如何在企业级应用这些原则,有很多意见和想法,而很少有示例。 可以肯定的是,即使在几天前的会议上,我也很少发现有人在生产环境中运行Docker容器。 当我问起初次体验以及是否有人玩过时,至少举起了合理的手。 并查看运行容器化基础结构所需的所有操作级别知识(操作系统,网络等),我可以理解所有这些。 要使Enterprise Java开发人员更容易做到,必须做很多事情。 实际上,我们可以使用一些方法来使用日常工具,并将它们与最新技术结合起来以进行自我教育。 其中之一是WildFly Swarm,它是一种轻量级且简便的方法来构建完全包含的Java EE应用程序。 这篇博客文章将向您展示如何在Docker上本地运行它。

什么是WildFly Swarm?

WildFly是一款轻巧,灵活,功能丰富且符合Java EE 7的应用程序服务器。 WildFly 9甚至引入了仅27MB的Servlet发行版 。 两者都是Java Enterprise项目的坚实基础。 最新版本的WildFly 10.CR2将成为Red Hat的下一个受支持的Java EE服务器产品Enterprise Application Platform 7的基础。

WildFly Swarm摆脱了各种概要文件的静态捆绑,使您可以构建自己的定制功能Java EE运行时。 但是,WildFly Swarm不仅涉及定制的应用程序服务器,而且还涉及到定制的应用程序服务器。 它是关于将包含相关应用程序服务器组件的应用程序捆绑在一个可执行文件中。 这也称为“ fat-jar”,可以简单地使用java -jar运行。 当我们谈论它时:微服务通常将完整的应用程序及其堆栈带入其中,因此您可以将每个WildFly Swarm应用程序视为一个独立且完全包含的微服务。

将Java EE应用程序变成胖子

通过添加Maven依赖项和插件,可以将Java EE应用程序打包为WildFly Swarm胖子罐。 可以从https://github.com/myfear/WildFlySwarmDockerSample/获得该简单JAX-RS示例的完整源代码。 该应用程序本身公开了一个端点/ rs / customer,该端点仅输出一些文本。 真正的魔力被放入pom.xml文件中。 我们现在正在经历。

首先, 对Java EE 7 API的依赖关系 ,然后是

<dependency><groupId>org.wildfly.swarm</groupId><artifactId>wildfly-swarm-jaxrs</artifactId><version>${version.wildfly-swarm}</version></dependency>

WildFly Swarm插件负责应用程序的打包:

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

这就是所有魔术。 您可以使用“ mvn软件包”来构建应用程序。 您将在目标文件夹中找到war文件本身以及一个附加附件“ swarm-sample-1.0-SNAPSHOT-swarm.jar”。 如果打开该文件夹,则可以找到一个m2repo文件夹,其中包含所有从属库,并且您的应用程序本身捆绑在_bootstrap \文件夹中。 您可以从maven项目中的命令行直接运行它(Windows用户可能会遇到此问题 ):

java -jar target/swarm-1.0-SNAPSHOT-swarm.jar

将浏览器重定向到http:// localhost:8080 / rs / customer将向您显示一些json

{"text":"WildFly Swarm Docker Application on OpenShift at http://192.168.99.100:32773/rs/ - Hostname: 093ca3279a43"}

Docker化WildFly Swarm

WildFly Swarm项目在github上有一些Docker示例。 大多数情况下,bash脚本和一些包装器可以对您的项目进行docker化。 但是还有更好的东西:Roland Huss的Docker Maven插件 。 我之前已经使用过几次,并且在本示例中也使用了它。 您所要做的就是将插件添加到pom.xml中 。

<plugin><groupId>org.jolokia</groupId><artifactId>docker-maven-plugin</artifactId><version>${docker.maven.plugin.version}</version>
</plugin>

配置有点棘手。 (感谢Roland在过去几天给我的所有电子邮件支持!)。 首先,基础很简单。 将图像添加到插件配置中,并相应地命名。 我继承自jboss / jdk-base:8,图像获得名称并标记为myfear / swarm-sample:latest( 第77ff行 )。 构建配置公开端口8080并定义相关入口点 (使用-jar参数启动java的命令)。 图像的组装需要包括项目附件 ,并将附件作为依赖项 。 确保输出服务映射和basedir与入口点参数匹配。

让我们对其进行测试

确保您的主机上具有docker-machine设置。 创建一个开发机器并相应地配置环境变量。 现在您可以运行:

mvn clean install docker:build docker:start -Ddocker.follow

注: 10.3.5 Docker Maven插件中的错误实际上现在无法立即提取基本映像。您需要在执行maven运行之前手动执行'docker pull jboss / jdk-base:8'。)

将构建该项目,并从映像启动一个容器。

一群

恭喜,您现在在本地Docker实例中有一个正在运行的Java EE微服务。 下一个博客实际上将研究如何获取此图像并将其在OpenShift Origin上运行并根据您的需求进行缩放。

翻译自: https://www.javacodegeeks.com/2015/10/a-wildfly-swarm-jax-rs-microservice-in-a-docker-container.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iterator and iterable

前者是迭代器 后者是接口&#xff0c;List等继承这个接口 转载于:https://www.cnblogs.com/mayidudu/p/5986649.html

C#解析json文件的方法

C# 解析 json JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。 JSON采用完全独立于语言的文本格式&#xff0c;可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单&#xff0c;易于人阅读和编写&#x…

spring 线程池_Spring线程池服务

spring 线程池线程池对于执行同步和异步过程非常重要。 本文介绍如何使用Spring开发和监视线程池服务。 创建线程池已通过两种替代方法进行了说明。 二手技术 &#xff1a; JDK 1.6.0_21 春天3.0.5 Maven的3.0.2 步骤1&#xff1a;建立已完成的专案 创建一个Maven项目&…

arrayQueue

用数组实现队列&#xff1a; 定义头文件&#xff1a; 1 #include<stdio.h>2 #include<stdlib.h>3 #define MAX_SIZE 104 int queue[MAX_SIZE];5 int front-1;6 int rear-1;7 8 int IsFull(int queue[]); //判断队列是否已满 9 int IsEmpty(int queue[]); …

109. Convert Sorted List to Binary Search Tree

不定期更新leetcode解题java答案。 采用pick one的方式选择题目。 题意为将一个增序单链表转换成为二叉搜索树。 可以采用递归的方式依次确认该层应选择的单链表位置作为树的节点依次向下进行。每次选择做树该层的节点为链表的中间值。 代码如下&#xff1a; 1 /**2 * Definit…

带有骆驼,ActiveMQ,Elasticsearch的HL7关键用例

对于可以说HL7协议格式的系统&#xff0c; HL7 over MLLP是一种非常常见的传输机制。 JBoss Fuse是一个非常强大的微服务样式集成平台&#xff0c;在为关键医疗保健提供者构建灵活&#xff0c;有弹性&#xff0c;高可用性的集成方案方面拥有良好的记录。 此外&#xff0c;在JCA…

android 包裹内容,Android开发中Bundle用法 包裹数据

SDK里是这样描述&#xff1a;A mapping from String values to various Parcelable types。它帮助我将数据打包传入intent里面&#xff0c;为使用这些数据提供了便利。protected void onListItemClick (ListView l, View v, int position, long id){super.onListItemClick(l, v…

安卓高级6 SnackBar

引言 文&#xff0f;李牧羊&#xff08;简书作者&#xff09; 原文链接&#xff1a;http://www.jianshu.com/p/2654e6bda3b1 著作权归作者所有&#xff0c;转载请联系作者获得授权&#xff0c;并标注“简书作者”。 在之前我有提到这一篇Android Design Support Library系列文章…

html语言及语法结构,HTML语法结构.ppt

HTML语法结构HTML超文本标识语言 HTML超文本标识语言 HTML概念 HTML(Hyper Text Markup Language 超文本标识语言) 是一种用来制作超文本文档的简单标记语言。用HTML编写的超文本文档称为HTML文档。 HTML超文本标识语言 HTML文档的编写方法 1.手 工 直 接 编 写 记事本等&#…

利用Aspose.Word控件实现Word文档的操作

Aspose系列的控件&#xff0c;功能都挺好&#xff0c;之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出&#xff0c;可以实现多样化的报表设计及输出&#xff0c;由于一般输出的内容比较正规化或者多数是表格居多&#xff0c;所以一般使用Aspose.Cell来实现我想要的各…

html编码自动识别,html实体编码遇上js代码

摘要&#xff1a; 在js中单、双引号引起来的是字符串&#xff0c;如果我们要在字符串中使用单、双引号&#xff0c;需要反斜杠进行转义。而如果字符串出现在html标签中&#xff0c;我们需要做转义处理。单双引号在js代码中在js中单、双引号引起来的是字符串&#xff0c;如果我们…

jpa动态扩展sql_扩展您的JPA POJO

jpa动态扩展sql可扩展性是许多体系结构的重要特征。 它衡量是否容易&#xff08;或困难&#xff09; 它是在不影响现有核心系统功能的情况下添加或更改功能。 让我们举一个简单的例子。 假设您的公司拥有一个核心产品来跟踪体育俱乐部中的所有用户。 在您的产品体系结构中&…

手机 html 折叠效果,HTML5仿苹果手机的面板合拢折叠效果

passbook仿苹果手机的面板合拢折叠效果-html5特效.pocket{width:300px;height:460px;padding: 10px;overflow: hidden;float: left;border: 1px solid #EDEDED;margin: 4px;border-radius: 8px;box-shadow:0 -5px 30px rgba(0,0,0,0.2) inset;}.passcard {float: left;width:30…

Activiti中具有单独数据库模式的多租户

我们过去听到的一项功能请求是以多租户方式运行Activiti引擎&#xff0c;使租户的数据与其他租户的数据隔离。 当然&#xff0c;在某些云/ SaaS环境中&#xff0c;这是必须的。 几个月前&#xff0c;波恩大学的学生拉斐尔吉伦&#xff08;Raphael Gielen&#xff09;与我接触&…

dfs手写栈模板

在竞赛中如果系统栈很小的话&#xff0c;过深的递归会让栈溢出&#xff0c;这个时候我们就要自己手写栈&#xff0c;将递归转化成手工栈。 方法其实也很简单。 基本思路上&#xff0c;我们就是用栈不断的pop,push。但是何时push&#xff0c;何时pop呢&#xff1f; 在《算法导论…

html5自动把某个层放在屏幕底部,告诉你一个将 footer 保持在底部的最好方法

当你在布局网页时&#xff0c;有可能会遇到类似下面的这种情况broken_layout.png导致这一问题的原因是页面内容太少&#xff0c;无法将内容区域撑开&#xff0c;从而在 footer 下面留下一大块空白。本文将介绍一种现代化的方法&#xff0c;&#xfffd;确保 footer 始终处于页面…

前后数据交互(ajax) -- 初始化页面表格

// 初始化员工信息列表 function loadpage ( pageNum ) {var keywords $("#keywords").val();$("#tbody").html("");if ( isNaN(pageNum) ) {pageNum 1;}$.$.ajax({type: GET,url: contextPath "/getaccountList/" pageNum "…

html的扇形代码导航,CSS3--利用transform和transition属性制作扇形导航

在前面&#xff0c;我们已经讲解了transform这个属性以及案例&#xff0c;那么本文会进一步结合transform和transition两个属性&#xff0c;并制作一个简单的案例进行说明。一、transition属性说明接下来简单分析一下transition这个属性的定义以及子属性。1)ansition-property …

UCI数据

http://archive.ics.uci.edu/ml/datasets.html?format&task&att&area&numAtt&numIns&type&sortinstDown&viewtable转载于:https://www.cnblogs.com/zangrunqiang/p/5999238.html

常见的误解:这会创建多少个对象?

总览 一个常见的问题是一段代码创建多少个对象或多少个字符串。 答案通常不是您的想法&#xff0c;也不是您真正需要知道的。 了解何时创建对象是很有用的&#xff0c;但是有很多其他因素通常要考虑的重要得多&#xff0c;这可能意味着应用程序总数不是您所想的。 字符串不是一…