在cloud foundry上为自己的独立应用添加数据库服务

 相关参考资料如下:

  1. 如何把独立应用部署到cloud foundry: http://cnblog.cloudfoundry.com/?p=382 。
  2. mysql数据库服务的介绍:http://docs.cloudfoundry.com/services/mysql/mysql-overview.html
  3. 如何安装vmc: http://docs.cloudfoundry.com/tools/vmc/vmc.html 

补充:因为cloud foundry现在支持的框架不够多,当用到一些暂时没有被cloud foundry支持的框架时,用普通方法部署不上去(比如我用了google guice时,我就部署不上去,不知道有没有其他办法),所以我把app放到tomcat里,作为一个独立应用上传到cloud foundry。但是这样我没办法让cloud foundry自动帮我绑定一个数据库,所以我想了以下办法去连接数据库。

我部署上去的应用在这里:http://gentlesummer.cloudfoundry.com

以下过程用到的是:tomcat6+mysql+jsp。过程的关键是:读取云环境里的VCAP_SERVICES变量(数据格式是JSON),这个变量里包括了连接数据库的关键参数:ip、端口、用户名、密码等。

现在假设我已经按照上述教程,把一个tomcat应用服务其改装好了,也安装了vmc工具。剩下的步骤是把tomcat push到cloud foundry上,创建一个数据库服务绑定到刚上传的应用上,并想办法取得连接mysql的必要参数。

把tomcat push到cloud foundry上

在把tomcat push到cloud foundry上之前,我们现在tomcat的webapps/ROOT目录里新建一个jsp文件,假设文件名是test.jsp,文件内容大致如下:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'MyJsp.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  <body>
  	<%=java.lang.System.getenv("VCAP_SERVICES") %> 
        <span style="color:red;font-size:50px">test</span>
  </body>
</html>


 body内的内容是关键。

然后,回到tomcat的基目录,执行命令把tomcat push到cloud foundry上,命令如下图:    在cloud foundry上为自己的独立应用添加数据库服务_第1张图片

我们打开网址测试一下tomcat是否正常:   在cloud foundry上为自己的独立应用添加数据库服务_第2张图片

貌似正常,的确是正常!只是大括号里没有内容。下面我们往大括号里填写内容。

创建一个数据库服务,并绑定到上传的独立应用上

 创建服务和绑定服务的过程如下:                                               在cloud foundry上为自己的独立应用添加数据库服务_第3张图片

服务绑定成功。我们再刷新一下刚才打开的那个页面看看:

在cloud foundry上为自己的独立应用添加数据库服务_第4张图片

发现多了很多内容,我们把黑色字体全部复制下来,拿到这里用JSON格式化工具进行格式化,结果如下:              

{
    "mysql-5.1": [
        {
            "name": "testservice", 
            "label": "mysql-5.1", 
            "plan": "free", 
            "tags": [
                "relational", 
                "mysql-5.1", 
                "mysql"
            ], 
            "credentials": {
                "name": "d742c33a4140445ed990c21d51e0bd63d",   /*数据库名*/
                "hostname": "172.30.48.29",                     /*机器名*/
                "host": "172.30.48.29",                         /*ip地址*/
                "port": 3306,                                   /*端口号*/
                "user": "uviTBqaCTlU5J",                        /*用户*/
                "username": "uviTBqaCTlU5J",                    /*用户名*/
                "password": "pLJKolSPQ33jT"                    /*连接密码*/
            }
        }
    ]
}

这是一段JSON格式的数据,里面包含了数据库服务的一些信息,应用要连接绑定的数据库的话,以上参数已经足够了。当然在实际中,我们并不需要写个jsp页面把这些JSON数据返回,再人工进行处理。而是直接在应用里写程序,把这些数据解析出来后,就可以连接数据库了。这里只是为了直观而写个jsp把数据返回来,做示例。

 

你可能感兴趣的:(cloud,foundry,独立应用,绑定数据库)