1. 程式人生 > >Java/Tomcat on Windows Azure

Java/Tomcat on Windows Azure

從上次寫Windows Azure文章至今,已經過了近半年之久,最近因工作需要,我開始重拾已經許久未碰的Java(J2SE/J2EE),在製作教材的期間,心中浮起了
是否能將Tomcat/Java搬上Windows Azure的想法,趁著製作教材的空檔開始探查這種可能性。
結果是正面的,Microsoft不但早就提供了Windows Azure SDK for Java,同時也提供了Windows Azure Plug-In for Eclipse IDE,讓Java開發者能快速地將
使用J2EE Con​​tainer如Tomcat之類的Web應用程式搬上Windows Azure,本文便使用這個Plug-In與各位分享如何一步步的將Tomcat的專案搬上Windows Azure執行。

[b]準備動作[/b]

開始之前,必須先準備好相關的工具,當然,Eclipse IDE for Java EE Developer是必需的,可由以下網址下載:

[url]http://www.eclipse.org/downloads/[/url]

接著將Windows Azure Plug-In安裝至Eclipse中,此動作通常由Eclipse IDE中的Help|Install New Software…選項執行。

安裝的Software site網址為:

[url]http://dl.windowsazure.com/eclipse[/url]

圖1

[align=center][img]http://dl.iteye.com/upload/attachment/0078/0836/f03fd945-93ff-368b-9b3e-8e19a9fb63f2.jpg[/img][/align]

安裝完成後,Eclipse部分就準備就緒,如果電腦尚未安裝Windows Azure SDK的話,請至以下網址下載安裝。

[url]http://www.microsoft.com/web/gallery/install.aspx?appid=WindowsAzureSDK[/url]

這樣所有準備動作就算完成,接下來便可進行應用程式的開發。

[b]First Azure Application with Java[/b]

首先自然是透過Eclipse 來建立一個Web Project,我們將其命名為FirstAzure。

圖2

[align=center][img]http://dl.iteye.com/upload/attachment/0078/0844/0ab79ff7-f951-3998-a65c-cfca5a27ab0e.jpg[/img][/align]

圖3

[align=center][img]http://dl.iteye.com/upload/attachment/0078/0838/7325ba3d-8303-3289-b0b2-cbc4a3964462.jpg[/img][/align]

在Runtime部分選擇Tomcat 7,如果電腦尚未安裝的話,可至以下網址下載:

[url]http://tomcat.apache.org/download-70.cgi[/url]

請注意,Windows Azure是64-bit的環境,因此不管是JDK還是Tomcat,都建議下載64-bit的版本。

專案建置完成後,在WebContent目錄下新增一個index.jsp檔案。

圖4

[img]http://dl.iteye.com/upload/attachment/0078/0840/a1e84bd2-7ea7-3e51-8345-ad56fa4e8cec.jpg[/img]

完成後點選Run來測試一下,正確無誤的話應該可看到以下畫面。

圖5

[img]http://dl.iteye.com/upload/attachment/0078/0842/02ebe183-87ee-34fa-91d2-1ae9b25a579d.jpg[/img]

接著建立Windows Azure Project。

圖6

[img]http://dl.iteye.com/upload/attachment/0078/0846/f7a19925-48b1-3841-a444-ce9b9d2dfc5a.jpg[/img]

圖7

[img]http://dl.iteye.com/upload/attachment/0078/0848/65846a1c-aedb-3c0c-9c21-7d4b2a3afed6.jpg[/img]

完成後點選FirstAzure專案,選擇Export WAR File..

圖8

[img]http://dl.iteye.com/upload/attachment/0078/0851/3190b846-bde4-3977-956c-9863757b4c0a.jpg[/img]

將輸出目錄設定Windows Azure Project專案所在目錄中的WorkerRole1\approot,這個動作的目的是將WAR檔案輸出到Windows Azure Project,

稍後進行Windows Azure Package封裝時才能一併封入。

圖9

[img]http://dl.iteye.com/upload/attachment/0078/0850/b9f17537-ce46-3642-92bf-98c76031b024.jpg[/img]

另外,當建立Windows Azure Project時,Wizard會產生一個HelloWorld.war檔案,這是為了測試用的,請刪除他。

圖10

[img]http://dl.iteye.com/upload/attachment/0078/0854/a94a160d-aa1d-35dc-98ba-eba56f1bc327.jpg[/img]

接下來的動作比較複雜一些,因為Tomcat on Windows Azure是以Worker Role方式存在,因此執行Tomcat所需的檔案都必須要隨著應用程式一起封裝,第一個要準備的便是JDK,

只是JDK並沒有提供可轉分發型別的Package(僅有msi與exe的安裝檔),其安裝時需要使用者互動,這不適合用在Worker Role,所以我們先在本機電腦上先安裝JDK,然後將把

JDK安裝後的目錄壓縮成ZIP檔,如圖011所示。
圖11

[img]http://dl.iteye.com/upload/attachment/0078/0855/afbe4cfa-d984-33d8-9d04-8f23be8f322e.jpg[/img]

第二個要準備的檔案是Tomcat 7,請由以下網址下載:

[url]http://tomcat.apache.org/download-70.cgi[/url]

其ZIP內容如下。

圖12

[img]http://dl.iteye.com/upload/attachment/0078/0858/aba89a7d-bf12-31ad-9494-02554c493397.jpg[/img]

接著將JDK,Tomcat的ZIP檔案複製到Windows Azure Project專案下的WorkerRole1\approot目錄下。(Windows Azure是64-bit環境,建議JDK/Tomcat都使用64-bit)

圖13

[img]http://dl.iteye.com/upload/attachment/0078/0860/3b599671-7e68-307b-b005-8536d2208cd5.jpg[/img]

完成後點選Windows Azure Project,後選擇Project|Build All來進行封裝。

圖14

[img]http://dl.iteye.com/upload/attachment/0078/0862/bdf4369f-288a-3888-bb3b-c6bedbd61034.jpg[/img]

結束後你會見到以下的畫面。

圖15

[img]http://dl.iteye.com/upload/attachment/0078/0864/3ffcc4c7-ae48-3ec8-87cf-e8985f0e5111.jpg[/img]

Samples目錄中提供了各種J2EE Con​​tainer的設定樣板檔案,請開啟Tomcat7這個,然後將其內容複製到WorkerRole1\approot\startup.cmd檔案中。

圖16

[img]http://dl.iteye.com/upload/attachment/0078/0866/42e4e629-de10-338d-b192-c8e087470441.jpg[/img]

接著修改其內容如圖17所示。

圖17

[img]http://dl.iteye.com/upload/attachment/0078/0868/d1fbda73-cd0d-38ee-b2f3-0681c982c53b.jpg[/img]

如果仔細看內容,會發現startup.cmd只是個批次檔,要修改的是圖中三個紅框所示之地方,第一段是tomcat解壓後的目錄名稱(如果都是由官網下載的話,通常只須改後面的版本號),

第二段是WAR的檔案名稱,這就是我們要佈署到Azure的Web Project封裝。第三段是tomcat的ZIP檔案名稱,這與第一段通常必須成對修改,本文使用的是Tomcat 7.0.27 X64版本。

完成後,以滑鼠點選emulatorTools\RunInEmulator.cmd檔案。

圖18

[img]http://dl.iteye.com/upload/attachment/0078/0870/3f0eced6-8703-333b-8db4-824da61886d6.jpg[/img]

如果一切正確的話,FirstAzure這個Web Project將會執行在Windows Azure的模擬環境中。

圖19

[img]http://dl.iteye.com/upload/attachment/0078/0872/1c0d9efa-768a-3a32-b82a-4164872824ea.jpg[/img]

在模擬器執行Tomcat與Web應用程式所需的步驟:

[list]
[*]安裝Eclipse IDE for Java EE Developer
[*]安裝Windows Azure SDK for Java Developer Plug-In
[*]安裝Windows Azure SDK
[*]安裝JDK至本機電腦
[*]建立JDK目錄於C:\
[*]將JDK的安裝目錄(例如C:\Programs\JDK1.7)內容複製到C:\JDK目錄
[*]將整個JDK目錄壓成JDK.ZIP(JDK.ZIP結構必須是JDK\xxx)
[*]安裝Tomcat 7
[*]建立Dynamic Web Project
[*]新增JSP
[*]建立Windows Azure Project
[*]Export Dynamic Web Project的WAR到Windows Azure Project的WorkerRole1\approot目錄
[*]將JDK.ZIP及Tomcat的ZIP檔案複製到Windows Azure Project的WorkerRole1\approot目錄下
[*]對Windows Azure Project進行Build All
[*]修改WorkerRole1\approot\startup.cmd
[*]對Windows Azure Project進行Build All
[*]執行emulatorTools\RunInEumulator.bat
[*]完成
[/list]

[b]Debuging Web Application with Eclipse[/b]

Microsoft所提供的Plug-In同時也能讓開發者透過Eclipse來除錯Web Application(Tomcat),步驟很簡單,選取WorkerRole1這個專案,按右鍵開啟Properties視窗。

圖20

[img]http://dl.iteye.com/upload/attachment/0078/0874/13ea0b55-51e1-35cd-ab57-dc47addc0607.jpg[/img]

勾選Enable Remote debuging in this role選項。

圖21

[img]http://dl.iteye.com/upload/attachment/0078/0878/2cd0a0cd-9c1b-37b2-a685-85426ac806e0.jpg[/img]

再點選Create Debug Configurations..按鈕,加入要除錯的專案(FirstAzure)。

圖22

[img]http://dl.iteye.com/upload/attachment/0078/0880/21deda55-5f2d-3bb0-9ff0-e3625662f0a5.jpg[/img]

完成後點選Build All來封裝Azure專案,接著再點選RunInEmulator.com來執行之後,待模擬器執行起來後,你便可以設定所要的中斷點,然後點選Debug Configurations…

圖23

[img]http://dl.iteye.com/upload/attachment/0078/0882/9f71b29a-c94a-31c9-bbba-b79a53b88bec.jpg[/img]

圖24

[img]http://dl.iteye.com/upload/attachment/0078/0884/c2d86cb5-6d5c-33d4-96c7-34f8ab547592.jpg[/img]

按下Debug按鈕後開始進入除錯模式後,請開啟瀏覽器鍵入http://127.0.0.1:81/firstazure/index.jsp來瀏覽,此時Eclipse便會跳出並進入除錯狀態。

圖25

[img]http://dl.iteye.com/upload/attachment/0078/0886/40ae7278-9239-3a9c-aaaa-eb89b1260f9d.jpg[/img]

[b]佈署至Windows Azure 環境[/b]

開啟Windows Azure Project的Properties視窗,選擇Deployment to cloud模式,這個模式在Build All動作時會將整個專案封裝成可直接上傳至Windows Azure的檔案。

圖26

[img]http://dl.iteye.com/upload/attachment/0078/0888/e2d14ede-5705-3137-a067-9be21e3e762b.jpg[/img]

接著點選Remote Access頁籤,再點選New按鈕來產生上傳需要用到的憑證檔案。

圖27

[img]http://dl.iteye.com/upload/attachment/0078/0890/00786ab2-23df-3667-8cc2-ac444f8ab888.jpg[/img]

圖28

[img]http://dl.iteye.com/upload/attachment/0078/0892/6b9a667b-052f-38f8-9ce5-d025198c384d.jpg[/img]

完成後點選Build All來封裝,接著開啟Windows Azure的管理網站進行上傳動作,如圖28。

圖29

[img]http://dl.iteye.com/upload/attachment/0078/0894/abd56af2-3acf-3c58-9e45-f63b8611dad5.jpg[/img]

注意,在此畫面中你還需要上傳剛剛產生的憑證檔案。

圖30

[img]http://dl.iteye.com/upload/attachment/0078/0896/4f6dbb82-a873-3c89-b417-aad00bc15f17.jpg[/img]

上傳完成並啟動後,你便可以見到Tomcat與你的Web Application執行在Windows Azure之上。

圖31

[img]http://dl.iteye.com/upload/attachment/0078/0898/a72f67ad-c344-31bd-bc84-a52e2f23cce8.jpg[/img]

[b]續….[/b]

基本上還蠻有趣的是吧?,當然,搬上Windows Azure只是第一步,後續的文章我將與各位分享如何在Java中使用SQL Azure、Table Storage/Blog/Queue等功能,

文章連結:[url]http://www.dotblogs.com.tw/code6421/archive/2012/04/23/71718.aspx[/url]