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 (秀和システム)
© Copyright 2024 ExpyDoc