SAE上傳web應用(包括使用資料庫)教程詳解及問題解惑
       最近由於工作需求,需利用SAE平臺,但在使用過程中遇到不少問題,比如如何上傳應用,上傳應用完畢後打不開,mysql連線不上等等,以及雲豆的計費問題,結合個人使用心得,將在本帖一一解答。
1,上傳web應用
首先,使用SAE平臺需要註冊自己的賬號吧,這個就不說了,然後進入我的首頁,會看到:
)A_YWVGL_~QIMD@`E9$
點選建立應用:QQ截圖20140429095555.png
二級域名是自己定義的,由數字和字母組成,不少於4位,應用名稱一般要跟你上傳的專案名相同,下面開發語言選擇java,然後會出現:QQ截圖20140429100051.png這個是JVM不同級別的自費資訊,如果不是特別大的專案一般選擇經濟版,JVM數量選擇1,那麼jvm開啟一小時,只會扣除5個雲豆,關閉後,不再計費,點選最下面建立應用後便會進入應用列表:
QQ截圖20140429100445.png
點選專案名後進入應用的詳細資訊介面:
QQ截圖20140429100617.png
最上面的access key和secret key是在使用mysql資料庫用到的,也就是連線mysql的使用者名稱和密碼,往下可以設定jvm的啟動關閉,重啟等,此時點選左側選單欄中的“程式碼管理”,之後:
QQ截圖20140429100924.png

在此處點選建立一個版本,一般第一個版本就填1,建立版本完畢後:
QQ截圖20140429101050.png
點選右邊的操作——上傳war包,至於怎麼把你的專案打成war包,就不用我說了吧,點選上傳OK後,第一個版本建立成功,此時你先看下你的jvm是否開啟,然後點選該專案連線,檢視是否部署成功,新手可以寫一個簡單的web專案比如helloword來熟悉流程,(開啟應用出現的404或503等問題放在後面講解)。

2,使用mysql資料庫
一個複雜點的web專案是都需要資料庫來支援的,那麼怎麼利用SAE提供的MySql資料庫呢?首先在應用詳細頁,點選左側選單服務管理-MySql:
QQ截圖20140429101855.png
然後點選初始化mysql,
QQ截圖20140429102312.png
接著管理mysql,會出現mysql的操作介面,這個跟我們本地操作就很類似了:

}5HNQKS{(ORB`~[I~]]I1R0.jpg
需要注意的幾點:
1.資料庫名:app_專案名,這個是不可修改的,所以你的程式碼中或配置檔案中的資料庫名稱要改成跟這個相同的;
2.資料庫連線地址,在最上面圈著的地方:w.rdc.sae.sina.com.cn:3307
(地址和埠號);

3.連線資料庫的使用者名稱和密碼(上面提到過):access key和secret key。

至於資料庫連線的程式碼,想必大家都再熟悉不過了,可以用最原始的程式碼,可以用配置檔案也可以用框架,下面我把我

的一個web應用連線資料庫的程式碼貼出來功大家參考:

首先是配置檔案:

DBhost=w.rdc.sae.sina.com.cn
DBport=3307
DBname=app_neteasy
DBuser=mwmk40zyk0
DBpassword=mi3hxh2212h3zz1lx5wklzw4wji3lxiklmkx1wlm
下面是具體實現方法:
private SqlManager() throws IOException

{


// 讀取配置檔案


bundle = new PropertyResourceBundle(SqlManager.class.getResourceAsStream("Config.properties"));


this.DBhost = getString("DBhost"); // 讀取主機名


this.DBname = getString("DBname"); // 讀取使用者名稱


this.DBprot = getString("DBport"); // 讀取埠


this.DBuser = getString("DBuser"); // 讀取使用者


this.DBpasswd = getString("DBpassword"); // 讀取密碼


// 設定mysql資料庫的驅動程式和連線字元


jdbcDrive = "com.mysql.jdbc.Driver";


strcon = "jdbc:mysql://" + DBhost + ":" + DBprot + "/" + DBname;


}

其實這跟本地連線資料庫的方法沒什麼區別,只是改一改資料庫的連線地址和埠號以及使用者名稱和密碼,
現只貼出部分程式碼,稍後會把完整程式碼下載連線附上。


3.上傳應用時所遇到的問題解惑:

1.不知道怎麼建立應用和上傳部署應用的上面已經詳細講解了;

2.上傳完畢後,開啟應用報404,503等錯誤如:
Error 404 - Not Found.No context on this server matched or handled this request.
Contexts known to this server are:

  • /1/neteasy ---> c.s.s.w.SaeWebAppContext{/1/neteasy,file:/data1/jetty_work/719/neteasy/jetty-0.0.0.0-11343-neteasy.war-_1_neteasy-any-/webapp/},/data1/www/htdocs/719/neteasy/1/neteasy.war [failed]
  • /2/neteasy ---> c.s.s.w.SaeWebAppContext{/2/neteasy,file:/data1/jetty_work/719/neteasy/jetty-0.0.0.0-11343-neteasy.war-_2_neteasy-any-/webapp/},/data1/www/htdocs/719/neteasy/2/neteasy.war
  • /neteasy/2 ---> c.s.s.w.SaeWebAppContext{/neteasy/2,file:/data1/www/htdocs/719/neteasy/2/},/data1/www/htdocs/719/neteasy/2



還有的是報Servlet is not a Servlet的,這多半是因為你的jdk版本過高或者你的jar包跟雲端已有的jar衝突所致,解決方法:
將你的專案匯出war包後,用壓縮包形式開啟,刪除其中包含的servlet-api.jar,之後在上傳war包;

3.連線不上資料庫,這個基本上屬於你的程式碼問題,要麼就是你程式碼本身有問題,若在本地跑的很順溜,但就是連不上雲端資料庫,那多半是你的資料庫連線地址,埠,以及使用者名稱密碼有誤,請仔細檢查

注意點:
1.上傳web應用時,先進行瘦身,也就是刪除沒必要的jar或者jsp或者java檔案,可以儘量避免jar衝突也可以節省空間(SAE規定一個專案最大不超過100M);

2.建立一個應用,一般只需建立兩個版本就可以了,除非有必要,第一個版本放那不用管(若只有一個版本的話是不允許覆蓋的,所以至少需兩個版本),第二個可以更新迭代你的應用了(直接上傳覆蓋);

3.雲豆計費,每個jvm每小時5雲豆,設定自動回收,會在該應用2小時沒有訪問時自動休眠,所以做測試的童鞋,在不用的時候可以關閉,已節省雲豆,通過實名認證可以額外獲得2000,夠用一陣子了。。。

下面是我的web應用的工程檔案以及連線資料庫後返回的資訊截圖:

20140429124828.png

20140429124653.png

最後附上我該專案的demo,其中包含了連線資料庫的關鍵程式碼:

http://download.csdn.net/detail/baiyuliang2013/7269897

技術歷程(轉自:http://www.cnblogs.com/x_wukong/p/3721320.html)