OpenShift DIY:使用Gradle构建Spring Boot / Undertow应用程序

开机 由于此bug, Gradle 1.6是在OpenShift上运行的最后一个受支持的Gradle版本。 但是从Gradle 2.2开始,这不再是问题,因此使用自己动手做墨盒在OpenShift上运行最新的Gradle不再是问题。 DIY墨盒是一种实验性墨盒,它提供了一种在OpenShift上测试不受支持的语言的方法。 它提供了最小限度的自由形式的支架,将墨盒的所有细节留给了应用程序开发人员。

这篇博客文章说明了在Undertow上运行Spring Boot 1.2和Java 8的用法,它被支持作为Tomcat的轻量级替代方案。 起来并运行不超过10分钟。

先决条件

在开始构建应用程序之前,我们需要安装一个OpenShift免费帐户和客户端工具。

步骤1:建立DIY应用程式

要使用客户端工具创建应用程序,请键入以下命令:

rhc app create <app-name> diy-0.1

此命令使用DIY盒带创建应用程序,并将存储库克隆到目录。

步骤2:删除模板应用程序源代码

OpenShift创建一个可以自由删除的模板项目:

git rm -rf .openshift README.md diy misc

提交更改:

git commit -am "Removed template application source code"

步骤3:从GitHub提取源代码

git remote add upstream https://github.com/kolorobot/openshift-diy-spring-boot-gradle.git
git pull -s recursive -X theirs upstream master

步骤4:推送变更

基本模板已准备好推送到OpenShift:

git push

初始部署(构建和应用程序启动)将花费一些时间(最多几分钟)。 后续部署要快一些:

remote: BUILD SUCCESSFUL
remote: Starting DIY cartridge
remote: XNIO NIO Implementation Version 3.3.0.Final
remote: b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http)
remote: Started DemoApplication in 15.156 seconds (JVM running for 17.209)

现在,您可以浏览到: http://<app-name>.rhcloud.com/manage/health ,您应该看到:

{"status": "UP",
}

登录到OpenShift网络帐户并导航到“ Applications您应该会看到一个新帐户:

操作系统应用程序

引擎盖下

为什么要DIY?

可以将Spring Boot应用程序部署到OpenShift上的Tomcat盒中。 但是目前没有Undertow和Java 8支持,因此选择了DIY。 DIY有局限性:例如,无法缩放。 但这是尝试和玩新事物的完美选择。

应用结构

该应用程序是常规的Spring Boot应用程序,可以使用http://start.spring.io进行引导。 使用的构建系统是Gradle,包装类型是Jar。

从Spring Boot 1.2开始,支持Undertow轻量级高性能Servlet 3.1容器。 为了使用Undertow代替Tomcat,必须将Tomcat依赖项与Undertow的依赖项交换:

buildscript {configurations {compile.exclude module: "spring-boot-starter-tomcat"}
}    dependencies {compile("org.springframework.boot:spring-boot-starter-undertow")
}

OpenShift特定配置– application-openshift.properties –当前包含日志记录配置:

logging.file=${OPENSHIFT_DATA_DIR}/logs/app.log

OpenShift action_hooks

OpenShift在部署过程中的特定位置执行动作挂钩脚本文件。 所有挂钩都放置在应用程序存储库的.openshift / action_hooks目录中。 文件必须是可执行的。 在Windows中,可以在Git Bash中使用以下命令:

git update-index --chmod=+x .openshift/action_hooks/*

部署应用程序

部署脚本下载Java 8和Gradle 2.2,创建一些目录。 下载Gradle的方法如下:

if [ ! -d $OPENSHIFT_DATA_DIR/gradle-2.2.1 ]thencd $OPENSHIFT_DATA_DIRwget https://services.gradle.org/distributions/gradle-2.2.1-bin.zipunzip gradle-2.2.1-bin.ziprm -f gradle-2.2.1-bin.zip
fi

运行脚本后,将在$OPENSHIFT_DATA_DIR创建以下目录:

gradle  gradle-2.2.1  jdk1.8.0_20  logs

此外,该脚本还会导出正确运行Java 8 / Gradle构建所需的几个环境变量。 GRADLE_USER_HOME是最重要的一个,因为它设置了将存储所有Gradle运行时文件的主目录,包括用于构建应用程序的已下载依赖项。

deploy脚本的最后一个命令是运行Gradle任务以创建一个jar存档,可以使用java -jar commnad从命令行执行该存档(请参见下一段):

gradle bootRepackage

启动应用程序

deploy脚本成功完成后, build目录将包含一个组装了Spring Boot应用程序的jar。 该应用程序已启动,并绑定到OpenShift提供的服务器地址和端口。 另外,提供了概要文件名称,因此可以加载其他属性文件。 运行该应用程序的最终命令如下:

nohup java -Xms384m -Xmx412m -jar build/*.jar --server.port=${OPENSHIFT_DIY_PORT} --server.address=${OPENSHIFT_DIY_IP} --spring.profiles.active=openshift &

参考文献

  • 可以找到本文中使用的项目源代码。
    在GitHub上: https : //github.com/kolorobot/openshift-diy-spring-boot-sample
  • Spring Boot文档: http : //docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#cloud-deployment-openshift
  • 创建本文时使用了一些OpenShift参考:
    • https://blog.openshift.com/run-gradle-builds-on-openshift

翻译自: https://www.javacodegeeks.com/2015/02/openshift-diy-build-spring-boot-undertow-application-gradle.html

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

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

相关文章

使用JAX-RS和Jetty创建Web服务和Rest Server

用Java创建WebService非常容易。 将其添加到ServletContainer并将其部署到嵌入式WebServer仅需要几行代码。 让我们创建一个具有两个函数的简单计算器&#xff0c;作为WebService的示例。 计算器将计算任何数量的squareRoot和平方。 它将返回一个简单的JSON响应&#xff0c;其…

maya 中使用节点连接来求余数:

绑个东西要用到求余&#xff0c;不喜欢用表达式&#xff0c;就想用节点连出来&#xff0c;找了下网上只有 镀金铆钉 在火星时代上的教程&#xff0c;不过不能下载了&#xff0c;就自己想了下&#xff0c;终于搞出来了&#xff0c;做下笔记&#xff0c;不要忘了。 求余的思路&a…

java web 登录界面案例_【JavaWeb】74:写一个登录案例

今天是刘小爱自学Java的第74天。感谢你的观看&#xff0c;谢谢你。话不多说&#xff0c;开始今天的学习&#xff1a;Java又常被称之为后台开发。什么叫后台呢&#xff1f;除了后台还有什么前台、前端后端……这些概念一大堆&#xff0c;还容易弄混。以一个三层架构的知识点来引…

7种JIRA集成可优化Java开发流程

有哪些最佳集成可以用来优化JIRA工作流程&#xff1f; 我喜欢寻找在工作流程中提高效率的方法。 看着那些小的自动化和流畅的流程&#xff0c;使我的脸上露出笑容。 我知道我并不孤单&#xff0c;偶尔花更多的时间来获得一点点提升以使其正常工作&#xff0c;而不是最终节省了我…

hive处理日志,自定义inputformat

开放环境&#xff0c;hadoop-0.20.2&#xff0c;hive-0.6 1.日志分隔符 Xml代码 2010-05-31 10:50:17|||61.132.4.82|||http://www.360buy.com/product/201185.html 2010-05-31 10:50:17|||61.132.4.82|||http://www.360buy.com/product/201185.html分隔符是“ ||| ”&#xf…

将ActiveMQ持久消息传递性能提高25倍

Apache ActiveMQ&#xff0c;JBoss A-MQ和Red Hat Apache ActiveMQ是一个非常受欢迎的开源消息传递代理&#xff0c;由创建&#xff08;和工作&#xff09; Apache Karaf &#xff0c; Apache Camel &#xff0c; Apache ServiceMix以及许多其他工具的人提供给您。 它拥有一个充…

ECMA学习小结(3)——constructor 和 prototype

每个函数都有一个prototype的属性&#xff0c;当我们以这个函数为构造函数创建实例时&#xff08;即用new的形式&#xff09;&#xff0c;创建出来的这个对象是没有prototype的属性的。以下代码为例&#xff1a;在console里进行调试cf 拥有一个prototype的属性&#xff0c;这个…

java什么是网络接口_java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)...

使用java进行网络程序的开发&#xff0c;可以说是一件令人愉悦的事情&#xff0c;对于用惯了C网络接口编程的人来说&#xff0c;当他们首次使用Java开发网络应用程序&#xff0c;会发现java开发网络应用是如此的简单&#xff0c;甚至仅用几分钟时间&#xff0c;您就可以学会这种…

如何使用悲观锁定修复乐观锁定竞争条件

概括 在我以前的文章中 &#xff0c;我解释了使用显式乐观锁定的好处。 然后我们发现&#xff0c;在很短的时间范围内&#xff0c;并发交易仍可以在我们当前交易被提交之前立即提交产品价格更改。 此问题可以描述如下&#xff1a; 爱丽丝拿产品 然后&#xff0c;她决定订购…

SWT外观:自定义FlatScrollBar颜色等

最近&#xff0c;我引入了一个自定义滑块控件 &#xff0c;该控件可用于改善SWT外观和更细微的视图布局的感觉。 令人高兴的是&#xff0c;该小部件似乎已经在Code Affine世界之外找到了较早的采用者 。 这导致了一些增强 &#xff0c;这些增强将在以下各节中介绍。 SWT滚动条…

java虚拟机编译_[四] java虚拟机JVM编译器编译代码简介 字节码指令实例 代码到底编译成了什么形式...

前言简介前文已经对虚拟机进行过了简单的介绍,并且也对class文件结构,以及字节码指令进行了详尽的说明想要了解JVM的运行机制,以及如何优化你的代码,你还需要了解一下,java编译器到底是如何编译你的代码的本文不是从最底层的编译原理讲解本文是针对java代码,去查看归纳总结编译…

提高性能:流的非阻塞处理

1.简介 想象一下&#xff0c;我们有一个需要访问外部Web服务的应用程序&#xff0c;以便收集有关客户端的信息&#xff0c;然后对其进行处理。 更具体地说&#xff0c;我们无法在一次调用中获得所有这些信息。 如果我们要查找不同的客户端&#xff0c;则需要多次调用。 如下图…

CDI和EJB:在事务成功时发送异步邮件

再一次问好&#xff01; :) 这次&#xff0c;我选择了一项常见任务&#xff0c;我认为大多数情况下都以错误的方式完成&#xff1a;发送电子邮件。 并非所有人都不知道电子邮件API的工作方式&#xff0c;例如JavaMail或Apache的commons-email 。 我通常看到的一个问题是&#…

使用默认方法的界面演变–第一部分:方法

几周前&#xff0c;我们详细研究了默认方法 -Java 8中引入的一项功能&#xff0c;该功能允许为接口方法提供实现&#xff0c;即方法主体&#xff0c;从而定义接口中的行为。 引入此功能是为了实现接口演进 。 在JDK的上下文中&#xff0c;这意味着在不破坏所有代码的情况下向接…

java两个和三个_Java语言基础(day_03)

数据类型中补充的几个小问题1)在定义Long或者Float类型变量的时候&#xff0c;要加L或者f。整数默认是int类型&#xff0c;浮点数默认晨double。byte&#xff0c;short在定义的肘候&#xff0c;他们接收的某实是一个int类型的值。这个是自己做了一个数据检测的&#xff0c;如果…

在Websphere 8.0上安装Liferay 6.2 Enterprise Edition

为Liferay准备Websphere 当应用服务器二进制文件均已安装完毕&#xff0c;启动WebSphere应用服务器&#xff08;WAS&#xff09; 配置文件管理工具来创建一个配置文件适用于Liferay的和遵循的指示说明这里正式Liferay的文档。 这些说明用于在Websphere 8.5上安装Liferay 6.2&am…

java完数流程图_编程基本功训练:流程图画法及练习

对于“程序设计”的工作&#xff0c;许多初学者的理解就是“写代码”。同样&#xff0c;新手们苦恼的问题是&#xff0c;他们只会“写代码”。当接到一个新的任务&#xff0c;不少人总是在第一时间就爬到键盘上去敲代码。敲着敲着&#xff0c;就把自己绕糊涂了。头晕脑胀地坚持…

java开发环境搭建 pdf_01搭建java web开发环境.pdf

01搭建java web开发环境.pdf还剩19页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;很抱歉&#xff0c;此页已超出免费预览范围啦&#xff01;如果喜欢就下载吧&#xff0c;价低环保&#xff01;内容要点&#xff1a;( 7)在 M…

在AWS Elastic MapReduce上运行PageRank Hadoop作业

在上一篇文章中&#xff0c;我描述了执行PageRank计算的示例&#xff0c;该示例是使用Apache Hadoop进行Mining Massive Dataset课程的一部分。 在那篇文章中&#xff0c;我接受了Java中现有的Hadoop作业&#xff0c;并做了一些修改&#xff08;添加了单元测试&#xff0c;并通…

java sort 第二个参数_详解java Collections.sort的两种用法

Collections是一个工具类&#xff0c;sort是其中的静态方法&#xff0c;是用来对List类型进行排序的&#xff0c;它有两种参数形式&#xff1a;public static > void sort(List list) {list.sort(null);}public static void sort(List list, Comparator super T> c) {lis…