none
Windows Azure SDK for Javaを利用したJavaアプリケーション構築について RRS feed

  • 質問

  • お世話になります。連続投稿申し訳ありません。

    以下の2点についてご存知の方がいれば教えて下さい。

    (1)複数のWorkerRoleを構築したい場合はどのように構築するのか?

       Windows Azure SDK for Javaを軽く触った感じですと、1つのWorkerRoleしか扱えないように思えます。

      複数のRoleに複数のJavaアプリケーション(.war)を構築することはできないのでしょうか?

    (2).NETのWorkerRoleのような常時プロセス型のアプリケーションはどのように構築するのか?

       Webアプリ以外のアプリをWindows Azure SDK for Javaで構築する方法がよく分かりません。。。

      

    2012年7月24日 2:51

回答

  • とりあえず前半部分についてですけど。

    > 例えば、Java VMがクラッシュしても呼出し側のWorkerRoleのC#側は正常なので、
    > Roleは正常ステータスとなってそうです。
    > 呼出し元で監視する仕組みが必要となるのでしょうか?

    Javaを起動する際の実装に依存するかとは思いますけど、例外が上がってC#側でキャッチしない例外があればロールはリサイクルされ再起動されるでしょう。Javaプログラム自身が例外吐いて死ぬのと、VMクラッシュまで想定するのでは色々と考慮点が異なるとは思いますけど、色々と試してみないことには何とも言えません。

    > b)RoleEnvironment情報を利用できない?
    >  Windows Azure Client Libraries for Javaの"com.microsoft.windowsazure.serviceruntime"を
    > 使って、RoleEnvironment情報にアクセスするためには、「2)ProgramEntryPointでJavaを起動」の必要がある?

    アクセスできのるではないかと思いますが、試してみないとわかりません。アクセスできないにしても、C#側で読み込んで変数に設定するなり、引数で与えるなりすればなんとかなりますけど。動的な変更通知はできなくなってしまうかもしれませんが。

    多分、検証するのが一番近道でないかと思います。

    2012年7月29日 12:12
  • 後半部分についてです。

    > 2)ProgramEntryPointでJavaを起動
    >   a)Azure SDK for JavaはProgramEntryPointでJavaを起動していない?
    >    スタートアップでTomacatなどのサーバのインスールとJavaのインストールしかしていなさそう。
    >    利用者側でProgramEntryPoint指定を追加する必要がある?

    過去に試した限り、立ち上がると思いましたが。
    http://d.hatena.ne.jp/StateMachine/20111215/1323958253

    直接起動する方法もありますので、SDKをつかわずできたりもします。

    http://blogs.msdn.com/b/thomasconte/archive/2011/09/20/windows-azure-sdk-1-5-des-nouveaut-233-s-discr-232-tes-dans-la-service-definition-pour-un-meilleur-support-php-java-etc.aspx

    参考まで。

    2012年7月29日 12:46

すべての返信

  • (1)については、軽くしか触ってないので良く分かってません。どの程度のアプリケーションを構築される予定なのか分かりませんが、市販のミドルウェアを使うのが手っ取り早いかも知れません。

    http://interstage.fujitsu.com/jp/apserver-azure/

    (2) WorkerRoleのC#から、Javaを起動するもよし、ProgramEntryPoint経由でJavaを起動するもよし、といったところでしょうか。ストレージにアクセスしたいならば、JarだけあればOkなので、SDK for Javaのような枠組みは必要ないかも知れません。

    2012年7月24日 15:00
  • statemachine様、返信ありがとうございます。

    やりたいことは.NET(C#)で構築しているWebRole/WorkerRoleのアプリケーションのJava変換です。

    WebRoleでは、フロント処理(ASP.NETのWebアプリケーション)を行い、WorkerRoleでは、バックグランド処理(.NETアプリケーション)を行っています。

    WorkerRoleのDBアクセス処理などのコアロジックをWebRoleからQueue/内部通信で呼出しています。

    1つのHosted(CloudService?)内に両Roleを配置しています。

    >(1)については、軽くしか触ってないので良く分かってません。どの程度のアプリケーションを構築される予定なのか分かりませんが、市販>のミドルウェアを使うのが手っ取り早いかも知れません。

    まずはもう少しAzure SDK for Javaを調べてみます。それでダメそうならミドルウェアを調べてみます。

    双方で実現不可能なら別々Hosted(CloudService?)にするなどを検討したいと思います。

    (2) WorkerRoleのC#から、Javaを起動するもよし、ProgramEntryPoint経由でJavaを起動するもよし、といったところでしょうか。ストレージにアクセスしたいならば、JarだけあればOkなので、SDK for Javaのような枠組みは必要ないかも知れません。

    いろいろな方法があると思うですが、以下についてご存知であれば教えて頂けないでしょうか?

    1)WorkerRoleのC#からJavaを起動した場合

      a)Azureの監視機構の対象外になる?

       例えば、Java VMがクラッシュしても呼出し側のWorkerRoleのC#側は正常なので、Roleは正常ステータスとなってそうです。

      呼出し元で監視する仕組みが必要となるのでしょうか?

     b)RoleEnvironment情報を利用できない?

       Windows Azure Client Libraries for Javaの"com.microsoft.windowsazure.serviceruntime"を使って、RoleEnvironment情報にアクセスするためには、「2)ProgramEntryPointでJavaを起動」の必要がある?

    2)ProgramEntryPointでJavaを起動

      a)Azure SDK for JavaはProgramEntryPointでJavaを起動していない?

       スタートアップでTomacatなどのサーバのインスールとJavaのインストールしかしていなさそう。

       利用者側でProgramEntryPoint指定を追加する必要がある?

    大きな疑問としてSDK for .NETでできることでSDK for Javaではできないことや、同じことをするための方法手段が分かりません。。。

    【参考にしたサイト】

    http://www.windowsazure.com/en-us/develop/java/

    http://dl.windowsazure.com/javadoc/


    2012年7月25日 1:27
  • とりあえず前半部分についてですけど。

    > 例えば、Java VMがクラッシュしても呼出し側のWorkerRoleのC#側は正常なので、
    > Roleは正常ステータスとなってそうです。
    > 呼出し元で監視する仕組みが必要となるのでしょうか?

    Javaを起動する際の実装に依存するかとは思いますけど、例外が上がってC#側でキャッチしない例外があればロールはリサイクルされ再起動されるでしょう。Javaプログラム自身が例外吐いて死ぬのと、VMクラッシュまで想定するのでは色々と考慮点が異なるとは思いますけど、色々と試してみないことには何とも言えません。

    > b)RoleEnvironment情報を利用できない?
    >  Windows Azure Client Libraries for Javaの"com.microsoft.windowsazure.serviceruntime"を
    > 使って、RoleEnvironment情報にアクセスするためには、「2)ProgramEntryPointでJavaを起動」の必要がある?

    アクセスできのるではないかと思いますが、試してみないとわかりません。アクセスできないにしても、C#側で読み込んで変数に設定するなり、引数で与えるなりすればなんとかなりますけど。動的な変更通知はできなくなってしまうかもしれませんが。

    多分、検証するのが一番近道でないかと思います。

    2012年7月29日 12:12
  • 後半部分についてです。

    > 2)ProgramEntryPointでJavaを起動
    >   a)Azure SDK for JavaはProgramEntryPointでJavaを起動していない?
    >    スタートアップでTomacatなどのサーバのインスールとJavaのインストールしかしていなさそう。
    >    利用者側でProgramEntryPoint指定を追加する必要がある?

    過去に試した限り、立ち上がると思いましたが。
    http://d.hatena.ne.jp/StateMachine/20111215/1323958253

    直接起動する方法もありますので、SDKをつかわずできたりもします。

    http://blogs.msdn.com/b/thomasconte/archive/2011/09/20/windows-azure-sdk-1-5-des-nouveaut-233-s-discr-232-tes-dans-la-service-definition-pour-un-meilleur-support-php-java-etc.aspx

    参考まで。

    2012年7月29日 12:46