今回は、Windows Azure での Java 開発について簡単に紹介したい。
はじめに
Windows Azure 上で Java の Web アプリケーションを動作させる場合、大枠で以下の分類があることをご存じだろうか(現時点で Web サイトは Java アプリケーションの動作には向かない)。
- クラウドサービス:war/ear を送り込むだけ&環境構築が楽
- 仮想マシン:自前で APサーバを設定する必要がある(もともとテンプレートがある WebLogic Server を除く)けど、設定含めてやりたい放題。WebSphere とかもこっちじゃないとインストールできない
上記の二環境について、Windows Azure Plugin for Eclipse with Java がデプロイ機能を支援しているのはクラウドサービス側であり、仮想マシン側は自前で好き勝手設定できるので自前でデプロイ方法を設定(Maven 等でもOK)する使い分けとなる。
Windows Azure Plugin for Eclipse with Java のインストール方法は Installing the Windows Azure Plugin for Eclipse with Java (by Microsoft Open Technologies) に詳細な記載が存在するため、まずはこちらを参照して Eclipse Plugin をインストールしてほしい。
Windows Azure Plugin for Eclipse with Java を使ってデプロイ
まずは新規プロジェクトの作成から Windows Azure Deployment Project を選択する。選択後、以下の画面が表示される。JDK に Microsoft Open Technologies が作成した OpenJDK ベースの JVM を選択可能になっている(もちろん自分でカスタマイズすることも可能だ)。
Server ではどの APサーバ上で稼働させるかを選択可能になっている。更に、「Deploy my local server(auto-upload to cloud storage)」では、初回のみクラウドストレージにアップロード&デプロイし、二回目以降はクラウドストレージからデプロイするオプションが設定可能だ。
Applications は通常と変わらずに war や ear を選択・追加することが可能になっている。
Windows Azure のクラウドサービスにデプロイするためにはアカウント情報を取得する必要があり、Eclipse プロジェクトを右クリックして Properties を選択し、左メニューから Windows Azure > Subscriptions を選択し、GUI のメニューに従ってアカウント情報をインポートする。この際、以下の画面が出たらおとなしく .NET Framework 3.5 をインストールすること(白目
アカウント情報の設定後、Eclipse プロジェクトを右クリックして Windows Azure > Deploy to Windows Azure Cloud を選択し、以下の画面からデプロイ情報を入力してデプロイを開始する。
以下は二回目以降の Eclipse プロジェクトのデプロイログだ。APサーバが再度アップロードされず、クラウドストレージから取得されていることが確認できる。
Buildfile: C:\XXXXXXXXXXXXXXXX\HelloAzure\package.xml checkResetScript: resetEmulator: createwapackage: [mkdir] Created dir: C:\XXXXXXXXXXXXXXXX\HelloAzure\deploy [delete] Deleting directory C:\XXXXXXXXXXXXXXXX\HelloAzure\deploy.old [windowsazurepackage] Verified attributes. [windowsazurepackage] Role "WorkerRole1": Verifying the approot "C:\XXXXXXXXXXXXXXXX\HelloAzure\WorkerRole1\approot" [windowsazurepackage] Role "WorkerRole1": Importing components... [windowsazurepackage] Not importing component 'jdk1.7.0_40' because it will be downloaded during deployment in the cloud [windowsazurepackage] Not importing component 'apache-tomcat-7.0.47' because it will be downloaded during deployment in the cloud [windowsazurepackage] Role "WorkerRole1": Finished importing components [windowsazurepackage] Role "WorkerRole1": Generating component deployment script... [windowsazurepackage] Role "WorkerRole1": Created internal startup script [windowsazurepackage] Starting package generation... [windowsazurepackage] Executing '[C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\v2.2\bin\cspack.exe, C:\XXXXXXXXXXXXXXXX\HelloAzure\ServiceDefinition.csdef, /role:WorkerRole1;C:\XXXXXXXXXXXXXXXX\HelloAzure\WorkerRole1\approot, /rolePropertiesFile:WorkerRole1;C:\XXXXXXXXXXXXXXXX\HelloAzure\.rolePropertiesOS3, /out:C:\XXXXXXXXXXXXXXXX\HelloAzure\deploy\WindowsAzurePackage.cspkg]'... [windowsazurepackage] Process started [windowsazurepackage] Windows(R) Azure(TM) Packaging Tool version 2.2.0.0 [windowsazurepackage] for Microsoft(R) .NET Framework 4.0 [windowsazurepackage] Copyright c Microsoft Corporation. All rights reserved. [windowsazurepackage] C:\XXXXXXXXXXXXXXXX\HelloAzure\ServiceDefinition.csdef: Warning CloudServices040 : The 'schemaVersion' attribute is unspecified. Please set the attribute to avoid this warning. [windowsazurepackage] Waiting for process to exit... [windowsazurepackage] Completed package generation. [windowsazurepackage] Copying 1 file to C:\XXXXXXXXXXXXXXXX\HelloAzure\deploy [windowsazurepackage] Verifying blob availability (http://portalvhdsmtkkx7225509q.blob.core.windows.net/eclipsedeploy/zulu1.7.0_40-7.1.0.0-win64.zip)...
デプロイが無事完了すると以下の画面が表示される。