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,一经查实,立即删除!

相关文章

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项目&…

带有骆驼,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系列文章…

利用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;如果我们…

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

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

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

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

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

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

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

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

cvs配电保护断路器_电工电器(三)-配电电器-断路器类-剩余电流保护断路器

本文文字836&#xff0c;阅读时间6分钟左右。此系列文章 从配电电器的大类等进行慢慢阐述&#xff0c;有不足的地方 欢迎大家相互探讨交流。配电电器&#xff0c;顾名思义就是进行电力分配的设备。电&#xff0c;从发电机出来之后&#xff0c;由总线输出&#xff0c;不可能直接…

delhpi7 tcombobox清楚重复项_专利数据统计中需要搞清楚的首要问题(2)

上一篇专利数据统计中需要搞清楚的首要问题(1)介绍了通过合并申请号避免重复统计&#xff0c;理清了专利篇数和专利件数的问题&#xff0c;那么还有一类统计就是对发明项数的统计&#xff0c;这里就涉及到对同一项发明的重复统计问题。上一篇介绍的相同申请号但不同公开号的专利…

【Electron】Electron开发入门(八):自定义electron框架外壳(shell)的菜单(Menu)...

1.自定义electron框架外壳&#xff08;shell&#xff09;的菜单&#xff08;Menu&#xff09; electron的main.js里代码&#xff1a; const Menu require(electron).Menu; var template [{label: 关闭,click: function () { win.close();console.log("关闭")},// s…

交通大数据应用细分_盈海科技 | 交通大数据可视化“掘金”数据价值

面对日益拥堵的交通状况智能交通布局虽在不断完善但交通管理依旧收效甚微问题究竟出在了哪里&#xff1f;数据独立存储难以融合应用数据内在规律难寻数据可视化程度低……问题繁多 困难重重怎么办&#xff1f;&#xff1f;&#xff1f;交通大数据可视化解决方案上岗啦&#xff…

书评– Kubernetes Up&Running,作者:Kelsey Hightower

欢呼&#xff01; 正如我在以前的帖子中所写的那样&#xff0c;当您开始研究和使用所有这些新颖的&#xff0c;有光泽的容器/编排技术时&#xff0c;很有可能最终导致您的翻译“迷失”。 很多信息&#xff0c;很多技术&#xff0c;很多开发 &#xff0c;很多承诺&#xff0c;很…

MFC CListCtrl

列名、行内容的添加、删除。 据列名、行内容长度设置列宽。 排序。 提升权限 BOOL CDemoListCtrlApp::EnableDebugPrivilege() { HANDLE token; if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&token)) { return FALSE; } TOKEN_PRIVILEGES tkp…

快手用旺旺瓶子做机器人_100品牌入榜,在快手的品牌运营怎么做?|11月快手品牌新势力榜揭晓...

11月榜单见证了许多新入驻快手的品牌迅速成长。母婴品牌「安慕斯」实现垂类专业场景剧情化&#xff0c;引起用户发注&#xff0c;激发用户参与&#xff0c;单月涨粉突破60万&#xff1b;服饰箱包运动垂类下的珠宝品牌「DR钻戒」以“一生唯一真爱”的理念抢占消费者心智&#xf…

认识计算机ppt课件游戏,《认识计算机》PPT课件

《认识计算机》PPT课件 认知主义认为 学习是个体对环 境的作用&#xff0c;而并不仅是环境刺激引起的行为改变&#xff1b;环境只能提供潜在刺激&#xff0c;至于这些潜在刺激是否受到注意或被加工&#xff0c;这主要取决于学习者内部的认知结构。 认 识 计 算 机 认知主义认为…

BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配

1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2375 Solved: 1005[Submit][Status][Discuss]Description Input Output Sample Input 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0Sample Output ˆ ˆHINT 对于30% 的数据满足1 ≤ n ≤ 12。对于100% 的…