JavaEE の実行環境を Microsoft Azure の Web サイト上で稼働させる で TomcatEE が Web サイト上で動作することを紹介できたが、今回は実際に JSF と CDI を利用したアプリケーションが動くかを検証する。前回の記事でも記載しているが、TomcatEE における JavaEE の実装は以下になる。
- JSF 2.1: MyFaces 2.1.15
- CDI 1.0: OpenWebBeans 1.2.6
- EJB 3.1: OpenEJB 4.7.1
上記の内容は アノテーションで大混乱した JavaEE6 頃の実装だが、めげずにアプリを作成したいと思う。また、今回利用したアプリは https://github.com/normalian/MavenWebApp に配置しているので、別途参照してほしい。
アプリケーションの概要
今回作成したアプリケーションは、以下の様に JSF でのデータバインディングを行い、セッションにデータを格納して次の画面で値を表示する簡単な内容だ。
コードの詳細は GitHub を参照いただくとして、トップ画面の XHTML, Java コードを紹介する。
- index.xhtml
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>Facelet Title</title> </h:head> <h:body> <h:form> Hello from Facelets & Please input message <h:inputText value="#{viewDto.message}" /> <br /> <h:commandButton value="submit" action="#{indexAction.doAction}" /> </h:form> </h:body> </html>
- ViewDto.java
package com.mycompany.mavenwebapp.common; import java.io.Serializable; import javax.enterprise.context.SessionScoped; import javax.inject.Named; @SessionScoped @Named public class ViewDto implements Serializable { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
- IndexAction.java
package com.mycompany.mavenwebapp.action; import com.mycompany.mavenwebapp.common.ViewDto; import java.io.Serializable; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.inject.Named; @Named @RequestScoped public class IndexAction implements Serializable { @Inject ViewDto viewDto; public String doAction() { System.out.println("@@@@@@@@ message = " + viewDto.getMessage()); return "show.xhtml"; } }
ご覧のとおり、JSF と CDI を利用した簡単なアプリケーションだ。ローカルの TomcatEE でも動作を確認後、Kudu を利用して D:\home\site\wwwroot\bin\apache-tomee-plus-1.7.1\webapps 以下に war ファイルを配置する。war 配置後は冒頭で記載した様に JSF と CDI が正しく動作していることが確認できる。
異常で、Jetty や Tomcat しか動かないと思われた Web サイトでも JavaEE の機能が利用できることが紹介できた。是非皆様もいろんなハックを Web サイト上でやってみよう!