在CloudFoundry上部署独立Java应用
2019独角兽企业重金招聘Python工程师标准>>>
昨天知道了一个Scala Web框架,感觉相当不错。
由于它是基于Netty的,不能通过Web容器部署,有点犹豫要不要用它,不知道能不能在CloudFoundry上发布。
之后搜到一篇关于在CloudFoundry上部署独立应用的文章,于是开始尝试。
首先,开发了一个简单的Socko示例应用,打完包以后目录结构大概是这样:
dist/main.jarlib/a.jarb.jar
其中IP和端口绑定代码为:
hostname = Option(System.getenv("VCAP_APP_HOST")).getOrElse("localhost"),
port = Option(System.getenv("VCAP_APP_PORT")).getOrElse("8080").toInt
理论上,我只需要把dist目录下的所有内容上传(vmc)到cloudfoundry上即可。
上传过程:
dist>vmc push msockotest
DL is deprecated, please use Fiddle
Instances> 11: grails
2: java_web
3: lift
4: node
5: play
6: rack
7: rails3
8: sinatra
9: spring
10: standalone
Framework> 10 // 选10,独立部署1: java
2: java7
3: node
4: node06
5: node08
6: ruby18
7: ruby19
Runtime> 2 // 是Java7开发的Custom startup command> java -jar study_socko_2.10-0.1.jar1: 64M
2: 128M
3: 256M
Memory Limit> 64M // 示例应用,不改了Creating mistsockotest... OK1: msckotest.cloudfoundry.com
2: none
Domain> msockotest.cloudfoundry.comUpdating msockotest... OKCreate services for application?> nSave configuration?> nUploading mistsockotest... FAILED
Upload failed. Try again with 'vmc push'.
TypeError: no implicit conversion of nil into String
For more information, see ~/.vmc/crash
结果却上传失败了,没有找到原因。替代方法是将启动命令写到脚本里:
startup.sh
CLASSPATH="./*:./lib/*"
export CLASSPATHjava $JAVA_OPTS helloexample.HelloApp
脚本放在dist下。然后把Custom startup command写成
./startup.sh
上传成功。再试,失败,然后无论怎么上传都是失败,就成功了一次。Google一下,发现很多人遇到这个问题,有人提出是新版本vmc的问题,于是卸载vmc0.5,安装0.4版:
gem uninstall vmc
uninstall tunnel-vmc-plugin# gem install -v 0.3.21 vmc
gem install -v 0.4.0 vmc
重新上传
dist>vmc push msockotest
Instances> 110: standalone
Framework> 102: java7
Runtime> 2Startup command> ./startup.sh1: 64M
Memory Limit> 64MCreating msockotest... OK1: msockotest.cloudfoundry.com
2: none
URL> msockotest.cloudfoundry.comUpdating msockotest... OKCreate services for application?> nBind other services to application?> nSave configuration?> nUploading msockotest... OK
Starting msockotest... OK
Checking msockotest... GAVE UP
Application failed to start.
上传成功,但启动失败了,于是查看日志:
dist>vmc files msockotest --path logs/err.log
DL is deprecated, please use Fiddle
Getting file contents... OK# Logfile created on 2013-04-23 05:57:24 +0000 by logger.rb/25413
F, [2013-04-23T05:57:24.510280 #25207] FATAL -- : Memory limit of 64M exceeded.
F, [2013-04-23T05:57:24.510350 #25207] FATAL -- : Actual usage was 65M, process terminated.
好象是内存不够,于是把Memory Limit改成128M
dist>vmc delete msockotest
...
Deleting msockotest... OKdist>vmc push msockotest
...
1: 64M
2: 128M
3: 256M
4: 512M
Memory Limit> 2Creating msockotest... OK...Uploading msockotest... OK
Starting msockotest... OK
Checking msockotest... OK
成功,就是Checking的过程稍微有点漫长,吓得我以为又失败了呢。
dist>vmc files msockotest --path logs/stdout.log
DL is deprecated, please use Fiddle
Getting file contents... OK./*:./lib/*
06:01:14.118 [HelloExampleActorSystem-akka.actor.default-dispatcher-4] [] INFO akka.event.slf4j.Slf4jEventHandler - Sl
f4jEventHandler started
06:01:14.228 [main] [] INFO o.m.socko.webserver.WebServer - Socko server '[WebServer, 172.30.49.146, 46824]' started o
n {}:{}
日志中可以看到这个应用实际绑定IP和端口。
用浏览器访问http://msockotest.cloudfoundry.com/,得到
Hello from Socko (Tue Apr 23 06:07:28 UTC 2013)
终于完成了,真曲折啊。
转载于:https://my.oschina.net/u/580483/blog/124665
在CloudFoundry上部署独立Java应用相关推荐
- cloudfoundry_在Cloudfoundry上部署RESTful服务
cloudfoundry 在本文中,我们将使用Pivotal Cloud Foundry(PCF)开发人员在Cloudfoundry上部署RESTful服务. 由于创建静态Web服务不是本文的一部分, ...
- 在Cloudfoundry上部署RESTful服务
在本文中,我们将使用Pivotal Cloud Foundry(PCF)Dev在Cloudfoundry上部署RESTful服务. 由于创建静态Web服务不是本文的一部分,因此我已经创建了employ ...
- 通过Charmed Ceph 在 H3C UniServer R4950 G5 服务器上 部署独立的Ubuntu Ceph 存储集群
摘要 本文档提供了一个独立Ceph集群的构架参考,部署及各种访问方法.本测试在4台H3C UniServer R4950 G5服务器上构建了一个独立的可扩展.可靠和容错的Ceph存储集群.可以同时对外 ...
- SAP云平台CloudFoundry上部署应用的log分析
log: 有一些非常有用的信息: Retrieving logs for app jerry-demo-server in org I042416trial_trial / space dev as ...
- 使用cf push命令往CloudFoundry上部署应用的过程分析
看看cf push的输出: 和登录认证相关的endpoint: X-Vcap-Request-Id: 16e27e27-17d2-40db-7da2-435e9a0436d7::b73939f3-06 ...
- [文章存档]Azure上部署的java app在向第三方服务传送中文时出现乱码
https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-java ...
- SAP云平台CloudFoundry上部署了一个应用的技术明细
refresh token -> access token 换取的access token,因为security原因,没有以明文的方式显示在控制台里: 要获取更多Jerry的原创文章,请关注公众 ...
- 本篇文档介绍如何手动在ECS实例上部署Java web项目
本篇文档介绍如何手动在ECS实例上部署Java web项目.适用于刚开始使用阿里云进行建站的个人用户. 项目配置 { .section} 本篇教程在示例步骤中使用了以下版本的软件.操作时,请您以实际软 ...
- 在Xuper链上部署Java语言智能合约和分析存证合约的实现逻辑
前言 这篇文章咱们先简单的叙述下官方刚发布的最新版本中的native部署java语言编写的智能合约的过程然后再说下存证合约的代码实现逻辑,下一篇文章咱们说下如何根据自己公司的业务逻辑定义合约里面的数据 ...
最新文章
- 【公开课预告】AutoML知多少
- 高性能集群软件Keepalived之基础知识篇
- rest-framework:权限组件
- Java中的queue和deque
- apr_pool -- 内存池
- springcloud 整合 gateway_从Spring Cloud到Kubernetes的微服务迁移实践
- 信息论基础 原书第二版 中文版
- USB-CAN模块使用
- 导出java applet_Java Applet基础——输出HelloWorld
- DirectX11学习笔记五 摄像机类
- Win7操作系统: 请求的操作需要提升
- 为什么相机模型假设成像平面位于焦平面?
- 紫荆花开之say love to the girl you love
- markdown及IDEA快捷键
- 东杰转债上市价格预测
- easy excel date 类型解析报错_9 个绝对用得上的excel日期公式,赶紧拿走!
- 半双工通信java_Socket实现一个简单的半双工通信
- FreeRADIUS之RADIUSD说明
- PHP网页简单的计算机源代码
- GL-Studio 4.3-1 安装
热门文章
- 大根堆、小根堆(数组模拟操作)
- linux内核内存屏障,从硬件引申出内存屏障,带你深入了解Linux内核RCU
- 香港股市api调用代码返回示例
- 归约指令Reduction Instructions
- java读入一个不确定长度的一维数组
- 关于Linux性能调优之内存负载调优
- 湘潭大学计算机科学与技术录取分数线,计算机科学与技术专业分数线各大学排名(湖南)...
- 组网胖模式_胖AP和瘦AP的区别、组网优缺点分析
- Google推出免费中秋祝福短信服务
- 华科计算机考研复试书目,华中科技大学网络空间安全学院2020考研复试参考书目...