基于IBM Bluemix部署Java Web项目实战演练

林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

          摘要:本文主要介绍了IBM Bluemix,并详细说明了如何部署Java Web项目,如何添加MySQL服务。最后,提出了自己的一些看法。

BluxMix账号注册登陆:https://apps.admin.ibmcloud.com/manage/trial/bluemix.html?cm_mmc=CMDeveloperGCG-_-Bluemix-_-CSDN-_-onlineeventQ2

 文章目录
  • 一、Bluemix简单介绍
  • 二、BlueMix空间申请试用
  • 三、BlueMix创建Cloud Foundry应用
  • 四、添加新的服务
  • 五、总结

一、Bluemix 简单介绍

1、bluemix 带来了什么
        Bluemix 致力于解决上述在软件开发过程中遇到的问题,旨在帮助程序员更快速的开发,测试,部署和运维云平台应用。
什么是 Bluemix?
       简单的讲,Bluemix 就是一个开放的公有云平台,允许程序员在上面运行几乎所有类型的应用,而不用为硬件,软件,网络等其他因素分心。如上文提到,Bluemix 处于云世界的中间层,也就是 PaaS 层。如下图所示:

基于IBM Bluemix部署Java Web项目实战演练
2、选择 Bluemix 的理由
          第一,节省时间和精力,程序员可以把所有的心思都放在应用程序的编写和调优上,而不用去担心繁杂的平台基础架构和设施,更有利于发掘程序员的创造力,开发出更高质量,高性能的应用;

         第二,加速应用程序上线,在实际的操作中,只需要简单的几条命令或者 UI 界面的几次点击操作就能轻松的完成各种应用程序的部署,而完全不用去担心硬件采购,软件安装等等这些先期准备工作;

         第三,很容易的满足应用程序对各种新功能和新服务的需求,IBM 及其合作伙伴负责提供优质的服务,程序员只需要简单的“绑定”操作就能将服务加入到应用程序中;

         第四,Bluemix 支持的语言,运行时,框架等都是程序员已经熟知的,采用 Bluemix 平台几乎不需要增加新的学习成本;最后一点是,Bluemix 底层采用 IaaS 是可以提供企业级需求的 Softlayer,可以有效的保证平台的高性能和高安全性。

二、BlueMix空间申请试用

1、进入官网

官方首页:https://console.ng.bluemix.NET/   可以看到,主要分成了三大类,CF应用程序、容器及虚拟机。(其实还有一个使用 API 或服务)

基于IBM Bluemix部署Java Web项目实战演练

2、注册

BlueMix目前对用户免费申请注册都没有什么限制,每个注册用户有30天的免费使用,过了免费试用期后不知道会怎么样了。注册过程也很简单,一下就好了

基于IBM Bluemix部署Java Web项目实战演练

3、**登陆

这是BlueMix空间的控制面板,可以看到操作分为了4个版块:Cloud Foundry、Docker容器、虚拟机、服务和API。其中虚拟机是要交钱才可以用的。不能免费试用。

基于IBM Bluemix部署Java Web项目实战演练

注意:只有区域是英国的才会默认创建一个DEV空间

从这里可以看自己的区域:

基于IBM Bluemix部署Java Web项目实战演练

如果你自己选择了美国南部,那么主界面就变成如下(它不会默认创建一个空间,一进去就会提示你创建自己的空间)

基于IBM Bluemix部署Java Web项目实战演练

美国南部创建出来的空间如下,多了一个数据分析

基于IBM Bluemix部署Java Web项目实战演练

4、创建空间

默认情况下为会你自动创建一个叫dev的空间,当然,你也可以自己再重新创建新的空间

基于IBM Bluemix部署Java Web项目实战演练

注:初始申请时,Cloud Foundry、容器都是免费试用2GB的,但是一个月后需要绑定信用卡,Cloud Foundry可以一直免费使用.(免费套餐为运行时和容器提供每个月 0.5 GB 免费内存和大量服务空间,这个是官网说的)。

三、BlueMix创建Cloud Foundry应用

       下面笔者将来讲下如何在Bluemix中部署JavaWeb项目,将本地JavaWeb项目打包上传到Bluemix中去。
1、创建

在BlueMix控制面板中点击创建Cloud Foundry应用

基于IBM Bluemix部署Java Web项目实战演练

选择Web应用或者是移动应用。这里笔者选择Web应用

基于IBM Bluemix部署Java Web项目实战演练

2、选择应用类型

你可以选择你的应用类型,支持Liberty for Java、SDK for Node.jsGoPHPPython、Ruby、ASP.net 5、IBM XPages、社区 buildpack、个人已有代码。这里笔者选择Liberty for Java

基于IBM Bluemix部署Java Web项目实战演练

然后点击继续进行下一步

3、命名

选择应用后,然后填写应用名称,点击完成。

基于IBM Bluemix部署Java Web项目实战演练

5、选择编码

创建应用完成后,接下来就是开始编码了,这里有三种方式:Eclipse 插件、CF和Git。这里使用CF方式是最简单的,本文也都是采用这个方式,也建议你采用这种方式。

基于IBM Bluemix部署Java Web项目实战演练

6、安装CF命令行界面

选择CF方式编码比较简单,点击CF按钮后,接下来就是提示你安装CF命令工具和下载起动器代码包了。

这里主要分为两步:

基于IBM Bluemix部署Java Web项目实战演练


7、CF命令工具下载

CF命令工具官网:https://github.com/cloudfoundry/cli/releases,支持Debian 32 bit与64 bit、Redhat 32 bit和 64 bit、Mac OS X 64 bit、Windows 32 bit和64 bit,这里是CF命令工具Windows 32 位和CF命令工具Windows 64 位下载地址。

基于IBM Bluemix部署Java Web项目实战演练

8、下载应用起动器代码包

下载你的应用起动器代码包,解压后你就可以看到文件了,这是BlueMix提供给你的应用代码包示例。只有通过下载这个起动器代码包,你才能连接到个人Bluemix中心,通过电脑的控制台(win +r,然后输入cmd,确定即可)来操作个人Bluemix中心

下载的路径就在:这个下面蓝色按钮中,里面有下载的路径!

基于IBM Bluemix部署Java Web项目实战演练

如果找不到,请进入到个人创建的项目中,然后点击开始编辑

基于IBM Bluemix部署Java Web项目实战演练

起动器代码解压后的内容如下图,JavaHelloWorld.war就是默认下进入这个网页访问到的内容http://javawebproject.eu-gb.mybluemix.Net/。我们默认的个人Bluemix中心放在war包就是下面这个,后头就是要把个人Bluemix中心的这个war包替换掉。

基于IBM Bluemix部署Java Web项目实战演练

它这个项目其实就是一个web 项目,可以直接导入到Eclipse中来开发,然后添加自己所需要的功能,最后再push上去(也可以通过eclipse连接到Bluemix的插件),其中mainfifest.xml就是用来配置Bluemix个人中心的,这里篇幅有限,就不细说了。

9、连接并登录到个人Bluemix中心

打开Windows命令工具,cd 进入到你存放起动器代码文件夹中,连接到 Bluemix:cf api https://api.ng.bluemix.net。,注意,这里我直接把解压后的文件放在了c盘下了

(1)进入目录

基于IBM Bluemix部署Java Web项目实战演练

(2)连接Bluemix

[html] view plain copy
  1. cf api https://api.ng.bluemix.net  

基于IBM Bluemix部署Java Web项目实战演练

(3)登录Bluemix

[html] view plain copy
  1. cf login -u [email protected] -o [email protected] -s dev  
-u 后面表示用户,-s后面表示创建的空间,这里我直接使用了默认的,如果是自己创建的空间要记得改过来,然后输入密码后就可以了

基于IBM Bluemix部署Java Web项目实战演练

这里做好之后,这个黑框就一直开着,后台的操作都需要应用到这里!

10、打包本地war文件

首先来看看本地跑的效果,在MyEclipse(或Eclipse)下新建一个web工程,然后写入内容,这里不细讲了,本地启动Tomcat跑起来后的效果如下:

基于IBM Bluemix部署Java Web项目实战演练

 然后把整个工程的war文件导出去:在工作空间选择到项目,然后在FILE->EXPORT中,弹出如下内容。输入对应的参数即可

基于IBM Bluemix部署Java Web项目实战演练


11、上传本地war包到Bluemix

本地java web项目打包成war包后,使用命令,

[html] view plain copy
  1. cf push JavaWebProject  -p D:\JavaWeb\JavaWebHello.war -m 512  
这里一定要记得-p 后面跟的是本地war包的路径和名称
基于IBM Bluemix部署Java Web项目实战演练

接下来它会自动上传。编码、重新部署。这一过程大概等 了几分钟。最后如果显示如下,表示发布成功了。

基于IBM Bluemix部署Java Web项目实战演练

12、访问

在自己的浏览器中输入http://javawebproject.eu-gb.mybluemix.net/(现在你也可以访问,到2015.11.30试用期就会到了,到时可能访问不了)

基于IBM Bluemix部署Java Web项目实战演练

动画如下:这里是是一个统计访问请示的次数的一个简单的用JSP写的页面

基于IBM Bluemix部署Java Web项目实战演练

四、添加新的服务

这里要写一个mysql+servlet+jsp实现用户登录的小页面,并最终部署Mysql数据库和页面到IBM Bluemix,最终的效果如下:

基于IBM Bluemix部署Java Web项目实战演练

1、添加MySql服务

(1)、打开自己的项目。添加服务或API

基于IBM Bluemix部署Java Web项目实战演练

(2)、服务有很多,可以自己选择

基于IBM Bluemix部署Java Web项目实战演练

我们可以通过搜索来过滤 ,输入Mysql

基于IBM Bluemix部署Java Web项目实战演练

(3)创建服务

基于IBM Bluemix部署Java Web项目实战演练

创建后它会要求你重新编译的打包,确定就是

基于IBM Bluemix部署Java Web项目实战演练

(4)绑定服务

怎么来看数据库服务已经和我们的工程绑定了呢?很简单。进入项目后就可以看到了!

基于IBM Bluemix部署Java Web项目实战演练


2、本地访问远程Mysql数据库

即然后已创建数据库,那么接下为就是要建立数据表,同时,插入一些初始数据来验证!

(1)、查看数据库源信息

还是上面,选择显示凭证,这里就是远程的数据库名称、访问的用户名、密码了!

主要内容如下:

name:在配置环境用于本地测试时,该名称会包含在 JNDI 服务名称中。
port:DB 端口
db:db2 客户端中的数据库名称
username:用于身份验证,也用于模式名称
hostname:这会在配置环境用于本地测试时成为 servername
password:用于身份验证的密码

基于IBM Bluemix部署Java Web项目实战演练

(2)、本地连接个人Bluemix的MySql服务

打开我们的MySQL Workbench (本地电脑安了MySQL都会有),选择Database->Connect To Database,在弹出的框中,输入如下内容

基于IBM Bluemix部署Java Web项目实战演练

(3)建立表、插入数据

在上面确定后,我们就可以连接到远程的数据库了,下一步就是建表、插入一条数据

脚本如下:

[sql] view plain copy
  1. create database example;    
  2. use example;    
  3. create table user(    
  4. userid int primary key auto_increment,    
  5. name varchar(30) NOT NULL,    
  6. password varchar(30) NOT NULL    
  7. );    
  8. insert into user(userid,name,passwordvalues (null,'lin','1234');    

基于IBM Bluemix部署Java Web项目实战演练

可以看到数据库名ad_ab59b5772bf96a3 就是对应实例化凭证中的数据库 

接下来验证下数据,看看是不是真的插入成功了。

基于IBM Bluemix部署Java Web项目实战演练

3、建立Web项目

数据库有了,那么接下来就是通过web项目来连接,进行数据的查询了!

整个web工程的创建就不说了,不懂看这里Servlet+Jsp+MySql用户登录实例,工程下载路径在这里http://download.csdn.net/detail/evankaka/8714563

这里主要来看看连接数据库的代码,将jdbcurl、username、password改成你自己的Bluemix创建的Mysql服务的内容,然后打包成war包,你也可以直接用。

[java] view plain copy
  1. /**  
  2. *功能 定义数据库操作类 
  3. *作者 林炳文([email protected] 博客:http://blog.csdn.net/evankaka)  
  4. *时间 2015.4.22 
  5. */  
  6. package com.mucfc.dbc;  
  7.   
  8. import java.sql.Connection;  
  9. import java.sql.DriverManager;  
  10. public class DatabaseConnection {  
  11.     //定义数据库驱动程序  
  12.     private static final String DBDRIVER="com.mysql.jdbc.Driver";  
  13.     //数据库连接地址  
  14.     private static final String DBURL="jdbc:mysql://us-cdbr-iron-east-03.cleardb.net/ad_ab59b5772bf96a3?user=b1b48dec447479&password=1aa5dc06";//company表示数据库  
  15.     private static final String DBUSER="b1b48dec447479";  
  16.     private static final String DBPASS="1aa5dc06";  
  17.     private Connection connection=null;  
  18.     public DatabaseConnection() throws Exception{  
  19.         try{  
  20.             //数据库操作可能出现异常  
  21.             Class.forName(DBDRIVER);  
  22.             connection=DriverManager.getConnection(DBURL,DBUSER,DBPASS);  
  23.               
  24.         }catch(Exception exception ){  
  25.             throw exception;  
  26.         } finally {  
  27.         }     
  28.     }  
  29.     public Connection getConnection(){  
  30.         return connection;  
  31.     }  
  32.     public void close() throws Exception{  
  33.         if(connection!=null){  
  34.             try {  
  35.                 connection.close();           
  36.             } catch (Exception e) {  
  37.                 throw e;  
  38.             }  
  39.         }  
  40.           
  41.     }  
  42.   
  43. }  
这个就是了,本地来跑下Web项目吧!!!效果如下

基于IBM Bluemix部署Java Web项目实战演练

基于IBM Bluemix部署Java Web项目实战演练

4、打war包、上传war包

最后关键一步当然就上传了!

打包过程在上面已说了,这里不再细讲。将整个打包出去的war包命名为JavaWebLogin.war

上传命令:一定要选择通过cf api 然后cf login来登录到自己的空间后,才能使用cf push命令!!!,同时注意上传war包的路径和名称!!

基于IBM Bluemix部署Java Web项目实战演练

最后输出如下,表示成功:

基于IBM Bluemix部署Java Web项目实战演练

5、访问
打开浏览器,输入http://javawebproject.eu-gb.mybluemix.net/(到2015.11.30之前都还一直可以访问)正确的用户名/密码:lin/1234
效果如下:
基于IBM Bluemix部署Java Web项目实战演练
==========================================================================================
另一个项目:
笔者把以前写的一个 Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)也上传了上去,过程也和上面一样,本地连接BluxMIx成功,并能分页查询数据!但是,非常慢!然后上传war包成功后,打开 http://javawebproject2.mybluemix.net,却无法访问(经验证,有时能访问,有时不能!)!只给出了下面的信息,不知道是什么错了
基于IBM Bluemix部署Java Web项目实战演练
IE点击分页后,卡死了,下面是谷歌的效果:
基于IBM Bluemix部署Java Web项目实战演练

点击分页,页面出来了,但是数据没查出来:
基于IBM Bluemix部署Java Web项目实战演练

上传命令:
基于IBM Bluemix部署Java Web项目实战演练
提示上传成功并启动成功:
基于IBM Bluemix部署Java Web项目实战演练
日志信息(这个完全无法知道是哪里错了)

基于IBM Bluemix部署Java Web项目实战演练
访问失败了
基于IBM Bluemix部署Java Web项目实战演练


五、总结


优点:
1、可免费使用30天,2G应用程序、2G容器,10个服务
2、整体操作都比较简单,对运维人员来说也能学习
3、功能很齐全、光应用程序就支持了很多种,还有虚拟机、容器、服务
缺点:
1、响应太慢,后面部署的登录web项目,因为连接了数据库,验证返回等了将近2秒,如果是表多了,数据多了,不知道可靠性能不能保证了
2、网上教程较少,特别是关于容器这一块,整个bluemix的网站响应好慢!

还有以下是我比较关心的问题:

1、Bluemix相比国内的阿里云、腾讯云有什么优点?
2、整个Bluemix网站响应较慢,项目部署上去后,就只有一张表,输入数据后,等待验证将近2秒,这是为什么?
3、Bluemix如何保证数据的安全?以及如何保证不会出现像今年阿里云因为升级而导致的部分用户的数据丢失现像?
4、访问高峰期,Bluemix是否可靠稳定?宕机率目前所知是多少?
注:我在写这几个问题时,Bluemix网站挂了,登录不进去?难道在升级?怎么都没个公告。


今天又体验了下又有以下问题:
1、通过外部的工具连接到BluxMix的个人MySql中,进行创建表、删除表、插入数据,速度非常慢。光是插入46条记录就花费了3分钟(4个字段),删除一个表也将近2分钟?有什么方法可以加快速度?
2、是否支持通过CF直接操作数据库?
3、中文数据保存到数据库中就变成乱码了?
4、能否使用自己的日志记录的功能?或者有提供什么网站运行时日志记录的功能没?它个人中心的日志应该是一些上传启动相关的日志,而不是网站访问的日志信息
容器还在体验当中,后头还会进行补充!

参考文章: