
cloudbees
CloudBees是一个云平台,为您的应用程序提供存储库,CI服务(Jenkins)和服务器。 因此,开发,测试和部署所需的一切。 有很多选项,例如存储库可以是Git或SVN,对于服务器,您可以选择Jetty,Tomcat,Glassfish,JBoss,Wildfly等。还可以运行带有端口号的独立应用程序,因此您可以启动自己的服务器。 我们将在这里讨论这种情况。
spray.io是适用于Web应用程序的Scala框架。 它允许您创建独立的Web应用程序(启动它们自己的服务器,使用Spray-can)或有些受限制的.war的Web应用程序(spray-servlet),您可以将其部署在Glassfish,JBoss等JEE服务器上。我们将使用独立的Web应用程序。这里。
您可以从github克隆应用程序。 现在让我们快速看一下。
该应用程序
开机
Boot
文件是Scala App
,因此它类似于具有main方法的java类。 它是可运行的。 它创建Service
角色,该角色正在处理所有HTTP请求。 它还从app.port
系统属性读取端口号, app.port
服务绑定到主机和端口。 app.port
由CloudBees提供,如果要在本地运行该应用程序,则需要通过jvm命令行-Dapp.port=8080
。
服务
Service
具有MyService
特性,该特性仅处理到空路径的路由。 是的,该应用程序不是很复杂!
建档
build.gradle
文件更有趣。 让我们从头开始。
-
mainClassName
属性设置为Scala App。 当您通过gradlew run
从命令行在本地运行该类时,将要运行该类。 -
applicationDefaultJvmArgs
设置为-Dapp.port=8080
,这也是从gradle本地运行的必要条件。 这样,我们设置了要绑定Service
端口。 -
jar.archiveName
是用于设置生成的.jar名称的设置。 没有它,则取决于项目目录名称。
您可以通过发出gradlew run
(确保gradlew
文件是可执行文件)来运行应用程序。 当它运行时,您可以将浏览器指向http:// localhost:8080,然后应该看到“向喷雾罐上的喷雾路线问好!” 没什么,对不起。
还有“ cb”任务定义为gradle。 如果发出gradlew cb
,它将生成zip文件,其所有依赖项.jars szjug-sprayapp-1.0.jar
位于根目录中,并且szjug-sprayapp-1.0.jar
位于该根目录中。 对于CloudBees独立应用程序,此布局是必需的。
部署到CloudBees
首先,您需要在CloudBees上创建一个帐户。 如果有的话,请下载CloudBees SDK –这样您就可以从命令行运行命令。 在Mac上,我更喜欢brew install
,但是您可以自由选择方式。
安装后,运行bees
命令。 首次运行时,它会询问您的登录名/密码,因此您无需每次想要使用bees
时都提供它。
生成.zip,我们将其部署到云中。 进入应用程序目录( szjug-sprayapp
)并发出gradlew cb
命令。 该命令不仅创建.zip文件,还打印.jars列表,这些列表对于作为类路径传递给bees命令很有用。
使用从szjug-sprayapp
目录运行的以下命令部署应用程序:
bees app:deploy -a spray-can -t java -R class=pl.szjug.sprayapp.Boot -R classpath=spray-can-1.3.1.jar:spray-routing-1.3.1.jar:spray-testkit-1.3.1.jar:akka-actor_2.10-2.3.2.jar:spray-io-1.3.1.jar:spray-http-1.3.1.jar:spray-util-1.3.1.jar:scala-library-2.10.3.jar:spray-httpx-1.3.1.jar:shapeless