先日参加したJJUG CCCのブースLTで「IBM Cloudライト・アカウント」の存在を知りました。その後、ブースに行って @Santea3173 さん とお話して興味が湧いたので早速試してみました。
Java EEアプリのデプロイ
アカウントを取得してログインするとDashboardが表示されるので「リソースの作成」を押します。
![f:id:kikutaro777:20180602130524p:plain f:id:kikutaro777:20180602130524p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/k/kikutaro777/20180602/20180602130524.png)
今回はJava EEアプリを試すため「Liberty for Java」を選びました。その他の言語含めてライト・アカウントでも色々遊べそうです。
![f:id:kikutaro777:20180602130650p:plain f:id:kikutaro777:20180602130650p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/k/kikutaro777/20180602/20180602130650.png)
アプリ名やホスト名を入れます。
![f:id:kikutaro777:20180602141841p:plain f:id:kikutaro777:20180602141841p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/k/kikutaro777/20180602/20180602141841.png)
中はCloud Foundryが動いているので、Cloud Foundry CLIで簡単にデプロイなどができます。
自分の環境の話ですが、前にPivotal Web Servicesを触っていたので、接続先はPivotalになっていました。まずはIBM Cloudへ切り替えました。
cf api https://api.ng.bluemix.net
ログインします。
cf login
Java EEアプリはとりあえず超簡単なJSFページを作って試しました。ドキュメントをみるとmanifest.ymlが必要そうにみえましたが、なくても動きました。
github.com
なお、これを実装したときは手元のPayaraで動作確認をしてました。で、Websphereで確認することなく、そのままwarをIBM Cloudへデプロイしました。
cf push kikutaroibmcloudsample -p target\IbmCloudLightSample-0.0.1.war
![f:id:kikutaro777:20180602133158p:plain f:id:kikutaro777:20180602133158p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/k/kikutaro777/20180602/20180602133158.png)
デプロイ後、アクセスすると以下のページが表示されます。
![f:id:kikutaro777:20180602141925p:plain f:id:kikutaro777:20180602141925p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/k/kikutaro777/20180602/20180602141925.png)
名前を入れると、呼び返してくれる簡単なWebアプリですが、以下のようにちゃんと動きました。かなりお手軽ですね。
![f:id:kikutaro777:20180602141928p:plain f:id:kikutaro777:20180602141928p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/k/kikutaro777/20180602/20180602141928.png)
管理Beanについて
ちなみに、最初は管理BeanをCDI(@Named)で作っていたのですが、実行時に以下のエラーとなりました。CDI管理Beanが認識されていないようにみえます。Payaraでは問題なかったので、何か設定が必要なのかも?
![f:id:kikutaro777:20180602142709p:plain f:id:kikutaro777:20180602142709p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/k/kikutaro777/20180602/20180602142709.png)
とりあえずJSF管理Bean(@ManagedBean)で実装したら動いたのでソースは@Managedを使ったものとなっています。この辺りについてはどこかで原因を探ります。
ログをみて気付いたのですが、WebsphereのJSF実装はmyfacesなんですね。
org.apache.myfaces.view.facelets.el.ContextAwarePropertyNotFoundException: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'indexBean' resolved to null
at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getType(ContextAwareTagValueExpression.java:79)
at org.apache.myfaces.shared.renderkit._SharedRendererUtils.findUIOutputConverter(_SharedRendererUtils.java:78)
...