文档章节

在CloudFoundry上部署独立Java应用

E
 Ellipse
发布于 2013/04/23 14:17
字数 738
阅读 492
收藏 1

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

昨天知道了一个Scala Web框架,感觉相当不错。

由于它是基于Netty的,不能通过Web容器部署,有点犹豫要不要用它,不知道能不能在CloudFoundry上发布。

之后搜到一篇关于在CloudFoundry上部署独立应用的文章,于是开始尝试。

首先,开发了一个简单的Socko示例应用,打完包以后目录结构大概是这样:

dist/
    main.jar
    lib/
        a.jar
        b.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> 1

1: 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.jar

1: 64M
2: 128M
3: 256M
Memory Limit> 64M // 示例应用,不改了

Creating mistsockotest... OK

1: msckotest.cloudfoundry.com
2: none
Domain> msockotest.cloudfoundry.com

Updating msockotest... OK

Create services for application?> n

Save configuration?> n

Uploading 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 CLASSPATH

java $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> 1

10: standalone
Framework> 10

2: java7
Runtime> 2

Startup command> ./startup.sh

1: 64M
Memory Limit> 64M

Creating msockotest... OK

1: msockotest.cloudfoundry.com
2: none
URL> msockotest.cloudfoundry.com

Updating msockotest... OK

Create services for application?> n

Bind other services to application?> n

Save configuration?> n

Uploading 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... OK

dist>vmc push msockotest
...
1: 64M
2: 128M
3: 256M
4: 512M
Memory Limit> 2

Creating 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)
终于完成了,真曲折啊。

© 著作权归作者所有

上一篇: sbt依赖管理备忘
下一篇: spray-routing
E
粉丝 46
博文 83
码字总数 54654
作品 0
大连
程序员
私信 提问
加载中

评论(2)

E
Ellipse 博主

引用来自“狼狼A狗”的评论

哥们,CloudFoundry真的支持SOCKET啊!

请参考这篇文章http://cnblog.cloudfoundry.com/2012/07/20/268/
狼狼A狗
狼狼A狗
哥们,CloudFoundry真的支持SOCKET啊!
深度剖析CloudFoundry的架构设计

VMware在今年4月份突然发布了业内第一个开源的PaaS——CloudFoundry。发布至今的这几个月里,笔者一直关注它的演进,并从它的架构设计中获益良多,觉得有必要写出来与大家分享一下。 本文会分...

红薯
2011/11/21
2.5W
9
能不能将play1.2.5直接部署在cloudfoundry上?

@红薯 你好,想跟你请教个问题: 红薯大哥,请教你个关于cloudfoundry的问题,怎样能将play1.2.5的应用直接部署到cloudfoundry上呢?除了将应用打包成war形式,感觉这样部署很不方便啊。今天...

volador
2012/11/07
304
2
云计算前沿—详解PaaS之Cloudfoundry

随着云计算的不断发展,IaaS已经不能满足用户的需求。 作为一个 能够简化开发、测试、部署、运维的平台,Pass受到了越来越多的关注。今天沈阅斌老师将为我们分享关于PaaS的一些亲身经验和体会...

沈阅斌
2016/01/28
0
0
【Cloud Foundry 应用开发大赛】-cat 1.0[Cat文章管理系统]

cat改名chris现在放到http://chriss.jd-app.com/了,test账号依然有效 代码http://git.oschina.net/at1943/chris 应用名称:cat 1.0[Cat文章管理系统] 应用URL地址:http://catdev.cloudfoun...

noday
2012/12/30
4.2K
38
cloudfoundry不能正确创建mongodb服务

在搭建cloudfoundry实例时候,不能成功创建mongo服务,求指导啊 参考了各种文档如, https://github.com/cloudfoundry/vcap-java/tree/master/cloudfoundry-runtime 也用vmc或sts创建,还是报...

yooodooo
2013/01/10
731
2

没有更多内容

加载失败,请刷新页面

加载更多

websocket实现一个聊天室

上次讲了websoket的基础知识和应用插件,今天我们来用websocket来实现一个聊天程序。先看几张界面截图: 聊天界面: 历史消息查看: 用户上线提醒: 在线体验地址:地址 功能结构图 可以看到...

osc_k1o54uky
55分钟前
25
0
gvim的基本配置(中文乱码,行号和主题)

在C:\Program Files\Vim目录下的 _vimrc文件中,插入基本配置,包括中文乱码,行号和主题。 " Vim with all enhancementssource $VIMRUNTIME/vimrc_example.vim" 解决中文乱码set encodi......

osc_jcfo5qp3
55分钟前
15
0
cad版本转换器哪一款好用?DWG和DXF文件如何互转?

很多工作者在工作时发现,有时候自己接收到一个文件,点击打开时发现打不开,显示文件格式不对,遇见这样的情况就需要把文档转换成自己常用的文件格式。只有经过转换过的图才能打开查看,那么...

真不莲
56分钟前
20
0
C++类中引用成员和常量成员的初始化(初始化列表)

如果一个类是这样定义的: Class A{ public: A(int pram1, int pram2, int pram3); privite: int a; int &b; const int c; } ......

osc_y9y4gqxx
57分钟前
23
0
三年OI——我的初中信竞生涯

目录 前言 Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 后记 前言 OI至今已三年,小记一则,兼怀往事 文采不加,文章不伦不类,愧对语文老师 Part 1 初一上学期时,家父听说\(xzy\)(学长)得...

osc_9fexqrfv
57分钟前
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部