天天看点

使用Eclipse插件部署应用到CloudFoundry

一、什么是Cloud Foundry

Cloud Foundry是一个开源的平台即服务产品,它提供给开发者自由度去选择云平台,开发框架和应用服务。Cloud Foundry最初由 VMware 发起,得到了业界广泛的支持,它使得开发者能够更快更容易的开发,测试,部署和扩展应用。Cloud Foundry是一个开源项目,用户可以使用多种私有云发行版,也可以使用公共云服务,官网http://www.cloudfoundry.com

二、注册开发者账号

若要部署应用到Cloud Foundry,首先要申请开发者账号,https://my.cloudfoundry.com/signup,

使用Eclipse插件部署应用到CloudFoundry

注册完成后的几分钟内,登录你的邮箱,您将收到主题为“Welcome to Cloud Foundry - Your signup is approved!”,内有登陆Cloud Foundry平台的用户名和临时密码(后面会介绍如何更改密码)

三、安装Eclipse CloudFoundry插件

1)启动Eclipse,选择菜单Help-- >Eclipse Marketplace,在弹出框里,输入Cloud Foundry,然后搜索,点击安装,安装后重启Eclipse,就代表安装完成了。

使用Eclipse插件部署应用到CloudFoundry

2)安装完成需要调出这个插件使用,方法是:Window --> Show View ,在弹出框里选择Server,点击确定,这是就会在平时我们常用的控制台栏出现了Server这个栏目。如果我们曾使用过Tomcat的话,会在这里看到Tomcat服务选项。

使用Eclipse插件部署应用到CloudFoundry

四、部署应用到Cloud Foundry

(1)新建Cloud Foundry Server,在servers选项卡里单击右键-》new-》server-》选择Cloud Foundry,然后单击next

使用Eclipse插件部署应用到CloudFoundry

这时需要填入申请获得的账号和密码

使用Eclipse插件部署应用到CloudFoundry

然后单击next

使用Eclipse插件部署应用到CloudFoundry

这时可以将左边你的应用add到右边,然后单击finish,这时会弹出一个对话框,让你输入你部署在Cloud Foundry上web app名称

使用Eclipse插件部署应用到CloudFoundry

next,然后让你输入url地址(可修改)

使用Eclipse插件部署应用到CloudFoundry

然后单击finish后,又会弹出一个对话框问你绑定什么服务到你的应用,一般这里要设置数据库服务

使用Eclipse插件部署应用到CloudFoundry

单击加号选择mysql database

使用Eclipse插件部署应用到CloudFoundry

然后给你的这个服务起个名称,笔者这里命名为mysqlservice,然后单击finish

(2)Cloud Foundry参数设置

①修改密码

在Servers选项卡下双击VMware Cloud Foundry,弹出窗口

使用Eclipse插件部署应用到CloudFoundry

在overview里可以修改密码,修改后选择ChangePassword即可!

②启动mysql服务

单击Application选项卡,右击mysqlservice,然后选择open Tunnel

使用Eclipse插件部署应用到CloudFoundry

然后再右击mysqlservice选择show Tunnel information..

使用Eclipse插件部署应用到CloudFoundry

然后右击MySQLservice,选择copy all(这里主要用来复制cloudFoundry分配的数据名称,以及连接数据库的用户名和密码,以及端口)

比如笔者获得的信息如下:

UserName: u5SO4zfK53CcF    
Password: pM3G4xIbq1peR     
DatabaseName: df9bf5aaaa0fe4decbe74b96743761656     
Port: 10100     
URL: jdbc:mysql://127.0.0.1:10100/df9bf5aaaa0fe4decbe74b96743761656
           

这段信息很重要,因为我们连接mysql数据库的时候要用到

③远程新建和操作数据库方法一

本方法是通过Eclipse自带的Data Source Explorer,选择菜单Window-》show-》view-》Data Source Explorer

使用Eclipse插件部署应用到CloudFoundry

然后右击Database Connections-》然后选择mysql-》next-》选择mysql5.1驱动,如果提示驱动无效,请单击jar list选项卡,然后从你的硬盘中选择mysql-connector-java-5.1.20-bin.jar,然后填入上面我们获取的数据库的相关信息

使用Eclipse插件部署应用到CloudFoundry
使用Eclipse插件部署应用到CloudFoundry

然后单击Test Connection,测试能否连接到cloudFoundry提供的mysql服务,成功后即可单击finish完成,完成后可在data source Explorer选项卡下看到如下信息

使用Eclipse插件部署应用到CloudFoundry

数据库连接建好好,如何创建数据库呢,怎么远程执行sql呢?右击数据库MySQL_CF选择open SQL Scrapbook,我们可以在这里编写sql,然后右击选择执行即可!

使用Eclipse插件部署应用到CloudFoundry

④远程新建和操作数据库方法二

方法一有些不太方便,我们可以借助Navicat客户端来远程连接mysql数据,启动Navicat后新建连接信息如下:

使用Eclipse插件部署应用到CloudFoundry

用户名,密码,端口后填入我们上面获取的信息即可,然后就可以直接操作数据库了

五、程序中如何获取数据连接

(1)Cloud Foundry提供了VCAP_SERVICES 变量,该变量已在应用程序的 Cloud Foundry 环境中被设置。此变量的内容是一个 JSON 文件,其中包含一个与应用程序捆绑的所有配置服务的列表。以下为一个作为示例 JSON 文件(出于可读性考虑而重设了格式),该文件来自带有两个已配置 MySQL 服务的 Cloud Foundry 应用程序的环境。

{"mysql-5.1":[
    {
        "name":"mysql-4f700",
        "label":"mysql-5.1",
        "plan":"free",
        "tags":["mysql","mysql-5.1","relational"],
        "credentials":{
            "name":"d6d665aa69817406d8901cd145e05e3c6",
            "hostname":"mysql-node01.us-east-1.aws.af.cm",
            "host":"mysql-node01.us-east-1.aws.af.cm",
            "port":3306,
            "user":"uB7CoL4Hxv9Ny",
            "username":"uB7CoL4Hxv9Ny",
            "password":"pzAx0iaOp2yKB"
        }
    },
    {
        "name":"mysql-f1a13",
        "label":"mysql-5.1",
        "plan":"free",
        "tags":["mysql","mysql-5.1","relational"],
        "credentials":{
            "name":"db777ab9da32047d99dd6cdae3aafebda",
            "hostname":"mysql-node01.us-east-1.aws.af.cm",
            "host":"mysql-node01.us-east-1.aws.af.cm",
            "port":3306,
            "user":"uJHApvZF6JBqT",
            "username":"uJHApvZF6JBqT",
            "password":"p146KmfkqGYmi"
        }
    }
]}
           

使用访问操作系统环境变量的编程语言工具检索 VCAP_SERVICES 的值。例如,在 Java 中为 java.lang.System.getenv("VCAP_SERVICES"),在 Ruby 中为 ENV['VCAP_SERVICES']。在 Node.js (JavaScript) 中使用 process.env.VCAP_SERVICES,在 Python 中使用 os.getenv("VCAP_SERVICES")。

(2)数据库连接示例代码,以下代码采用fastjson去解析VCAP_SERVICES 的值,采用jfinal框架的c3p0的配置

String db_json = java.lang.System.getenv("VCAP_SERVICES");
String dbname,username,password,host,port;
if(StringKit.isBlank(db_json)){
//本机数据库设置
	dbname = "blogdb";
	username = "root";
	password = "test";
	host = "localhost";
	port = "3306";
}else{
//cloundFoundry数据库信息解析
	JSONObject credentials = JSONObject.parseObject(db_json).getJSONArray("mysql-5.1").getJSONObject(0).getJSONObject("credentials");
	dbname =  credentials.getString("name");
        username = credentials.getString("username");
	password = credentials.getString("password");
	host      = credentials.getString("host");
	port      = credentials.getString("port");
}
C3p0Plugin cp = new C3p0Plugin("jdbc:mysql://" + host + ":" + port + "/" + dbname, username, password);
           

六、如何查看应用部署错误日志

若部署的应用出错,如何查看错误日志呢?CloudFoundry插件给我们提供了Remote Systems View,在Applications选项卡下双击你部署的应用,就会在右边下面有个Remote Systems View链接,双击即可打开远程视图

使用Eclipse插件部署应用到CloudFoundry

参考资料:

http://cndocs.cloudfoundry.com/services/mysql/mysql.html