Java On Azure Web Sites

從Windows Azure開始提供VM服務後,在VM中使用Java作為服務平台已經不是難事,但對於不想管機器及網路設定的我而言,還是偏好使用PaaS的Cloud Servcies作為Java的服務平台。當然,透過PaaS來建置Azure上的Java服務平台有其一定的入門門檻存在,

多數情況下,你必須熟悉Worker Role的架構,還有儲存體的應用,才能建造出一個可活用到PaaS平台特性,又不會造成太多困擾的系統。

/黃忠成

 

Java On Azure

 

   從Windows Azure開始提供VM服務後,在VM中使用Java作為服務平台已經不是難事,但對於不想管機器及網路設定的我而言,還是偏好使用PaaS的Cloud Servcies作為Java的服務平台。當然,

透過PaaS來建置Azure上的Java服務平台有其一定的入門門檻存在,多數情況下,你必須熟悉Worker Role的架構,還有儲存體的應用,才能建造出一個可活用到PaaS平台特性,又不會造成太多困擾的系統。

   隨著Windows Azure的快速演化,Web Sites這個服務逐漸變成非MS服務平台的首選,例如PHP、Node.js,究其原因其實就是簡單、快速、易於部屬,如果由最早的Cloud Services分類來看,Web Sites可以稱為是名副其實的公共運輸型雲端服務,

因為使用Web Sites,你不需要知道機器是如何運行的、服務平台是如何架設,只需要把寫好的程式佈署到Web Sites中,就可以自然而然地跑起來。就像是坐捷運只需要一張悠遊卡一樣簡單(OK,是信用卡 XDD)。

   鑒於Web Sites在PHP等其它語言上的成功,Microsoft終於在Web Sites中提供了Java的服務平台,相對於要花上一些時間來建構VM或是Cloud Services來執行Java服務的專案,使用Web Sites變得非常的簡單,只要把編譯好的.WAR佈署到Web Sites中,

不需要準備JVM、Tomcat,一切會很自然地動起來。

 

 

Simple Solution

 

   如果是第一次使用Web Sites服務,要建置一個Java的服務平台是很簡單的,首先登入Windows Azure的管理平台,建立一個新的Web Sites。

圖001

選擇FROM GALLERY,會見到Tomcat相關的套件。

圖002

也可以選擇JETTY。

圖003

在這個例子中,我們選擇Tomcat作為服務平台。

圖004

建立好後,第一件事就是設定密碼,這用來上傳WAR檔案用。

圖005

圖006

完成後就會在DASHBOARD看到FTP的相關資訊。

圖007

透過FTP工具登入後會看到下圖的目錄結構。

圖008

切到Tomcat的Webapp目錄,WAR就是要上傳到這裡。

圖009

完成這些初步設定後,就可以開始撰寫Java Web應用程式,本例透過Eclipse建立一個簡單的JSP應用程式。

圖010

完成後透過EXPORT 功能輸出成為WAR檔案。

圖011

然後上傳到FTP中的Tomcat/webapps目錄。

圖012

一切正確的話,便可以在瀏覽器上看到JSP跑起來。

圖013

有沒有很簡單啊??

 

Using Configuration

 

   除了從零開始之外,Windows Azure也允許使用者在某個已存在的Web Sites中裝載Java服務平台,我們先透過QUICK CREATE建立一個Web Sites,這一開始是沒有Java相關服務的。

圖014

建立好後切換到CONFIGURE頁面,現在你可以直接在這裡啟用Java的服務平台支援。

圖015

啟用後再用FTP連進去,會發現目錄結構有些改變,注意,這跟第一種方式最大的差別是放置WAR的位置。

圖016

第一種方式(透過Gallery建立)是放在Tomcat/webapps中,第二種(透過CONFIGURE加入)是放在wwwroot/webapps中。不過最後的執行結果都是一樣的。

圖017

 

Connecting to Database

 

  資料庫部分,你可以選擇連結Azure中的SQL Database(SQL Server)或是使用ClearDB(MySQL),本文使用SQL Database,先建立一個SQL Database。

圖019

圖020

點選下方的MANAGE來登入。

圖021

接著是準備資料表和資料。

圖022

圖023

圖024

本例將使用Spring跟Hiberante來建置,確認引用的Librarys是否正確,通常,這些必須要在Deployment Assembly中設定成隨WAR發佈。

圖025

圖026

圖中的JDBC for SQL Server可於下列網址下載。

http://www.microsoft.com/zh-tw/download/details.aspx?id=11774

此例中要注意的是hibernate.cfg.xml的設定,如下所示。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

 <session-factory>

  <property name="show_sql">true</property>

  <property name="format_sql">true</property>

  <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>

  <property name="hibernate.connection.password">XXXXXX</property>

  <property name="hibernate.connection.url">jdbc:sqlserver://XXXXX.database.windows.net:1433;Database=myjavadb2</property>

  <property name="hibernate.connection.username">XXXXX</property>

  <property name="hibernate.default_schema">dbo</property>

  <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>

   <property name="hibernate.current_session_context_class">thread</property> 



  <mapping resource="com/gis/Products.hbm.xml"/>

 </session-factory>

</hibernate-configuration>

其餘的就跟撰寫一般的Java應用程式相同了。

圖027

 

關於server.xmlcontext.xml

 

   如果想使用JNDI或是想改變Tomcat的一些設定值,使用者可以選擇使用第一種方法來建置服務,然後透過FTP修改tomcat目錄下的server.xml或是context.xml來達到目的,有了Web Sites後,

Java應用程式上Azure就變得非常的輕鬆。