PowerPoint プレゼンテーション

WINGSプロジェクト 山田祥寛
[email protected]
http://www.wings.msn.to/


JavaサーブレットをAzureで動かすには?
Javaアプリからストレージサービスにアクセスする方
法

結局、Java on Azureってどうなの?

余談: 明日のLTではPHP on Azureをやります!

Starter Kit for deploying Tomcat-based Java solutions
on Windows Azure ( http://code.msdn.microsoft.com/azuretomcat )
◦ JSP&サーブレットコンテナTomcatをAzureパッケージに組み込む
ためのアクセラレータ

Windows Azure Tomcat Solution Acceleratorもあるけど、
こちらは古いものなので、使わない

.warファイルをブロブから動的に組み込めるので、再デプロイが容易に

事前に必要なもの

◦ Tomcat 5.5以上、JRE 5以上(今回は、Tomcat 6.0& JRE 6を利用)
意外と簡単にできます

Windows Azure SDK
Command Promptで
実行
Tomcat起動のためのWorkerロールを作成&ビルド
>C:\Data\TomcatAccelerator
TomcatはWindows

Zip版を。
\Buildme.cmd
Services Installer版で
は不可(??)
Please enter the path for
tomcat
binaries: C:\apache-tomcat-6.0.29
…
Please enter the path for JRE binaries :
C:\Program Files (x86)\Java\jre6


.warファイルをブロブにアップロード(Azure MMC等)
接続文字列、.warファイルの場所を設定
◦ これ以降はVisual Studioの操作で可能
設定名
意味
DiagnosticsConnectionString
診断情報の転送先
DataConnectionString
.warファイルを格納したストレージ
WarFileBlobContainer
.warファイルを格納したコンテナ
WarFileBlobName
.warファイルを格納したブロブ
WarFileTargetName
展開する.warファイル名

通常のデバッグ実行で起動可能
◦ 接続文字列などの情報を設定していない場合はエラー

ブラウザそのものは自動で起動しないので要注意

Windows Azure for Java(WindowsAzure4J)を利
用しよう!
◦ Eclipseプラグインとして、[インストール] ウィンドウから導
入できる
◦ http://www.windowsazure4e.org/update


Azureマネージライブラリからストレージライブラリだ
けを抜き出した感じのライブラリ
→ いわゆる開発支援機能はほとんどない
診断系、セッション管理には未対応 (?)

ストレージサービスへのアクセス機能

ブロブ、キュー、テーブルの参照、編集などは一通り
行える

Visual Studio Azure Tools 1.2よりは高機能

普通にJavaプロジェクトを生成したうえで、必要なライ
ブラリにビルドパスを通す
◦ ECLIPSE_HOME\plugins\org.soyatec.windows.azure.
java_1.0.0.201002091324\libsのすべての.jarファイル
◦ ECLIPSE_HOME\plugins\org.soyatec.windows.azure.
java_1.0.0.201002091324フォルダそのものにも

自動ではライブラリは組み込まれないので要注意
BlobStorage cli = BlobStorage.create(
URI.create("blob.core.windows.net"),
false,
“wings”,
“***********************************“
);
cli.setRetryPolicy(RetryPolicies.retryN(1, TimeSpan.fromSeconds(5)));
BlobContainer cont = cli.getBlobContainer("javatest");
if (!cont.doesContainerExist()) {
cont.createContainer();
cont.setContainerAccessControl(ContainerAccessControl.Public);
}
BlobProperties props = new BlobProperties("test");
props.setContentType("image/jpeg");
BlobContents blob = new BlobContents(
new FileStream("c:/RIMG0001.JPG"));
cont.createBlob(props, blob, true);
TableStorage cli = TableStorage.create (
public class Message extends TableStorageEntity {
URI.create("table.core.windows.net"),
private String name;
false,private String url;
"wings",
private String body;
“**************************"
public Message(String partitionKey, String rowKey){
);
super(partitionKey, rowKey);
}
CloudTable table = cli.getWindowsAzureTable("Message");
if(!table.doesTableExist()){
table.createTable();
}
public String getName()
{
Message msg = new
Message("Java",
"7");
return
name;
}
msg.setName("山田");
msg.setUrl("http://www.wings.msn.to/");
public void setName(String name) {
msg.setBody("こんにちは!");
this.name = name;
table.insertEntity(msg);
}
…
}
List<TableStorageEntity>
list = table.retrieveEntities(
Query.select().eq("name", "Yamada"));

TomcatをAzureで動作するのは比較的簡単

ライブラリもそれなりにそろっている

でも、現時点ではPHPよりは開発しにくい…かも?
PHP
Java
開発の準備
Eclipseでプロジェクト作成
必要なライブラリをインポート
開発→デプロイ
Eclipseのみで可
Eclipse、コマンド、Visual Studio
ライブラリ
±α
やや不足?

Windows Azure
実践クラウドプログラミング
for C#/Visual Basic/PHP
(秀和システム)