Java EEを使ってみる - 環境構築編
bewise.jpやまうちです。
故あってJava EEを使うことになり、とりあえずの最初として環境構築を行ってみました。
今であればJakarta EE 10もしくはJakarta EE 11ということにになるのでしょうが、少し試してみたものの手軽に動かすことはできなかったので、Java EE 8 (aka Jakarta EE 8) での環境構築となりました。
前提として入手しやすく、手元にある程度の情報があるものということで、Pleiades All in One EclipseとEclipse GlassFish 5.1の組み合わせで環境構築を行いました。
Pleiades All in One Eclipseの導入
Java開発の基本としてPleiades All in One Eclipseを導入しました。
Java EE開発ではNetBeansなども使われているようですが、とりあえずは使った経験のあるEclipse、それもいろいろ面倒なことがパッケージングされているPleiades All in Oneを使用することにしました。
バージョンは環境構築を行った時点で最新の2025-06を使用しています。
今回はWindows 11上で開発環境を構築するので、Windows x64版のJava Full Editionをダウンロードしました。なお、GlassFish 5.1はJava 8が必須なのでStandard Editionをダウンロードした場合にはJava 8を別途入手、インストールする必要があります。

特に意味はないのですが、念のためPleiades All in One Eclipseのダウンロードページの画像を入れておきました。
ダウンロードしたファイルは自己解凍型exeファイルとなっていますが、今回は7-zipを使用して「C:\javaee」フォルダに「pleiades」というフォルダ名で展開しました。Cドライブ直下に展開するというのが一般的なのかもしれませんが、とりあえずの学習用なので必要なければ一気にごみ箱行きができるようにフォルダにまとめるようにしたというのが理由です。
展開したフォルダにある「eclipse.exe」を実行し、「C:\javaee\workspace」にワークスペースを作成した画面が以下になります。

昔のEclipseと違ってデフォルトで表示されるビューが増えていて、かつダークテーマがデフォルトになっているのが気になるところです。ダークテーマはWebなどに貼り付けた際に見にくそうだし、あまり好きではないので「ウィンドウ(W)」メニューの「設定(P)…」を選択して「設定」ダイアログを表示し、「外観」で「ルック&フィール」を「ライト」に変更しました。以降の画面キャプチャは「ライト」テーマの画面になります。
Java EE開発に必要なソフトウェアの導入
Pleiades All in One EclipseにはJava開発の基本的なツール類はそろっているのですが、残念ながらJava EE開発に必要なツール群は導入されていません。
ということで、Java EE開発に必要となるであろう「データベース開発」と「Web、XML、Java EEおよびOSGiエンタープライズ開発」のソフトウェアを導入することにします。
Eclipseの「ヘルプ(H)」メニューにある「新規ソフトウェアのインストール…」を選択して「インストール」ダイアログを表示します。

「インストール」ダイアログ表示直後はインストール対象のソフトウェアが何も表示されていない状態となりますが、「作業対象(W)」のプルダウンメニューから上図赤枠内のように「--すべての使用可能なサイト--」を選択することでソフトウェアカテゴリが表示されるようになります。
表示された一覧から「データベース開発」および「Web、XML、Java EEおよびOSGiエンタープライズ開発」にチェックを入れて「次へ(N)」をクリックしてください。

「インストール詳細」ダイアログが表示されますので、必要があれば確認して「次へ(N)」をクリックするとソフトウェアのインストールが始まります。
途中でライセンスのレビュー、署名の信頼といった画面が表示されますので、確認してください。
インストールが終了すると再起動を促すダイアログが表示されますので、Eclipseの再起動を行ってください。

再起動後は上記のような「ようこそ」画面が表示されます。
OmniFish toolsの導入
GlassFishを使用したプロジェクトの設定やデプロイなどの操作を支援するOmniFish toolsがEclipseマーケットプレースで配布されています。今回はこれも導入します。
「ヘルプ(H)」メニューの「Eclipseマーケットプレース(M)…」を選択して「Eclipseマーケットプレース」ダイアログを表示します。

「検索(I)」(上図赤枠内) に「omnifish」と入力してエンターキーを押すと、上図のように「OmniFish tools for Eclipse GlassFish 7.0.1」(GlassFishのバージョンは異なっているかもしれません) が表示されますので、「インストール」ボタンをクリックしてインストールを行います。なお、「for GlassFish 7.0.1」となっていますが、GlassFish 5.1以降に対応しているので問題なく使用できます。
例によってライセンスのレビュー、署名の信頼などのダイアログが出ますので、確認して進めてください。最後に再起動を求めるダイアログが表示されたら再起動を行ってインストールは完了となります。
GlassFish 5.1の導入
Eclipse側の準備ができましたので、GlassFishを導入していきます。
GlassFishは「glassfish.org」からダウンロードできます。

「DOWNLOAD」リンク (赤枠内) からダウンロードページに移動してください。

ダウンロードページを開くと最初に最新版のGlassFishをダウンロードするリンクなどがありますので、下にスクロールしていき、「Eclipse GlassFish 5.1.0 - Jakarta EE Platform, 8」のリンク (上図赤枠内) をクリックして、GlassFish 5.1をダウンロードしてください。
ダウンロードしたZIPファイルを「C:\javaee\glassfish5」に展開します。
以上でインストール自体は終了となります。
GlassFishをEclipseに登録する
GlassFishをEclipseから使用できるように登録していきます。
Eclipseを起動し、「ようこそ」画面が表示されているようであればタブの「×」をクリックして閉じてください。

Javaパースペクティブが開いたら、中央あたりの画面にある「サーバー」タブ (上図赤枠内、画面が狭いので「サ」だけが表示されています) をクリックして「サーバー」ビューを表示してください。
「サーバー」タブが見つからない場合は、「ウィンドウ(W)」メニューの「ビューの表示(V)」から「サーバー」を選択して表示してください。

「サーバー」ビューが開くとPleiades All in One Eclipseには標準でTomcatが導入されているので、それらが表示されています。「サーバー」ビュー内で右クリックメニューから「新規(W)」の「サーバー」を選択して「新規サーバー」画面を表示します。

「サーバーのタイプを選択(S)」で「GlassFish」(上図赤枠内) の左端にある「>」をクリックして展開し、表示された「GlassFish」をクリックして選択します。
すると「サーバー名(M)」が入力できるようになりますので、サーバー名を設定してください。ここでは「GlassFish 5.1」としました。
「次へ(N)」をクリックすると「GlassFishランタイム・プロパティー」を定義する画面となります。

上図の上段赤枠内にはGlassFishを展開したフォルダ内にある「glassfish」フォルダを指定し、下段赤枠内は「Java8」を選択して「次へ(N)」をクリックしてください。
GlassFish 5.1はJava 8でないと動作しないので、「JRE」には必ず「Java8」を指定してください。

GlassFishアプリケーション・サーバーのプロパティー定義画面が表示されますので、内容を確認してください。
なお、上図赤枠内の「再デプロイメントにまたがりセッションを保持」のチェックボックスはチェックを外した方がいいかもしれません。
「次へ(N)」をクリックするとWebアプリケーションを追加・除去する画面が表示されます。

現時点で追加・除去できるWebアプリケーションはないので、このまま「完了(F)」をクリックして「新規サーバー」ダイアログを終了してください。

GlassFishサーバーの追加ができていれば、上記赤枠内のようにGlassFishサーバーがサーバービューに追加されます。
以上でEclipseからGlassFishが使用できるようになります。
Java EEアプリケーションの作成
GlassFishが利用できることを確認するため、簡単なJavaServer Facesアプリケーション、ありがちなHello, World!を作成しようと思います。
動的Webプロジェクトの作成
プロジェクトの作成は「ファイル(F)」メニューの「新規(N)」から「動的Webプロジェクト」を選択します。

「新規動的Webプロジェクト」ダイアログが表示されたら、一番上の赤枠「プロジェクト名(M)」にプロジェクト名を入力、ここでは「GlassFishTest」としました、二番目の赤枠「ターゲット・ランタイム」は「GlassFish5.1」を選択します。
三番目の赤枠「動的webモジュールバージョン(V)」は自動的に「4.0」が設定され、四番目の赤枠「構成(C)」には「GlassFish5.1デフォルト構成」が設定されます。
このままだとJavaServer Facesが使用できないので、四番目の赤枠「構成(C)」の右端にある「変更(I)…」のボタンをクリックします。

「プロジェクト・ファセット」ダイアログが表示されるので、赤枠の「JavaScript」、「JavaServer Faces」、「JPA」にチェックをつけるとともに「JPA」のバージョンを「2.2」に変更します。上の画面例では気の迷いでJavaServer Facesのバージョンを2.2に変更していますが、デフォルトの2.3でも問題なく動作します。
今回のサンプルプログラムではJavaServer Pagesのみを使用しますが、後々JavaScriptとJPAも使いたいと考えているので有効化しています。
また、JPAのバージョンは3.2がデフォルトになっていますが、GlassFish5.1では使用できないので、2.2に変更してください。
「OK」をクリックすると「新規動的Webプロジェクト」ダイアログの「構成(C)」が「<カスタム>」に変わりますので、確認した「次へ(N)>」をクリックしてください。

「ビルド・パス上のソース・フォルダー(S)」と「デフォルト出力フォルダー(D)」の確認画面が表示されますので、上記の通りになっていることを確認して「次へ(N)>」をクリックしてください。

JPAの設定を行うダイアログが表示されますので、「プラットフォーム(P)」が「Generic 2.2」、「JPA実装」の「タイプ」が「GlassFish System Library」になっていることを確認してください。「接続」はまだ準備していないので「<なし>」のままで問題ありません。「次へ(N)>」をクリックします。

Webモジュール設定画面が表示されますので、内容を確認して「次へ(N)>」をクリックしてください。

JSF機能の設定画面が表示されますので、内容を確認して「完了(F)」をクリックしてください。
以上で動的Webプロジェクトが作成され、プロジェクトエクスプローラーにプロジェクトが表示されます。

XHTMLファイルの作成
JavaServer Facesではユーザー・インタフェースとなるWebページをXHTMLファイル (XML構文によるHTML) で作成します。
「プロジェクト・エクスプローラー」で作成したプロジェクト (「GlassFishTest」プロジェクト) の左端にある「>」をクリックしてプロジェクトファイルを展開します。
さらに「src」、「main」と順に展開していき、「webapp」が表示されたら「webapp」を選択して、右クリックメニューから「新規(W)」の「HTMLファイル」を選択します。

「新規HTMLファイル」ダイアログが表示されたら上段赤枠内「webapp」が選択されていることを確認して、下段赤枠内「ファイル名(M)」に「hello.xhtml」と入力し、「次へ(N)>」をクリックします。

「HTMLテンプレートの選択」画面が表示されるので、「テンプレート(T)」の赤枠内「新規HTMLファイル (1.0 transitional)」を選択します。画面サイズによってはスクロールが必要な場合がありますので注意してください。
「完了(F)」をクリックするとプロジェクト・エクスプローラーにhello.xhtmlファイルが追加され、編集画面に内容が表示されます。

hello.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://xmlns.jcp.org/jsf/html"
lang="ja">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</h:head>
<h:body>
<h:form>
名前を入力してください
<h:inputText value="#{helloBean.name}"/>
<h:commandButton action="#{helloBean.greet()}" value="実行"/>
</h:form>
<h:outputText value="#{helloBean.greeting}"/>
</h:body>
</html>詳しくは別の機会で説明しますが、<html>要素に「xmlns:h=…」でJavaServer Faces関連のタグを使用することを宣言し、<head>要素と<body>要素をそれぞれ<h:head>要素、<h:body>要素に入れ替えています。
<h:body>要素内では<h:form>要素で入力フォームを定義し、<h:inputText>要素で文字列入力を指定し、その入出力先として「helloBean.name」を指定するとともに、<h:commandButton>要素で「helloBean.greet()」メソッドを実行するボタンを定義しています。なお、「helloBean.greet()」に付けている「( )」はメソッド呼び出しであることをコードの読み手に分かるようにつけているもので、JavaServer Facesとして必要なものではありません。
さらに<h:outputText>要素で「helloBean.greeting」の内容を文字列出力する指定を行っています。
HelloBean.javaの作成
続いてHelloBean.javaファイルを作成します。

「GlassFishTest」プロジェクトの「src/main/java」(上図赤枠内) を選択して右クリックメニューから「新規(W)」の「クラス」を選択します。

「新規Javaクラス」ダイアログが表示されたら「ソース・フォルダー(D)」の内容を確認し、「パッケージ(K)」(上段赤枠内) にパッケージ名、ここでは「jp.bewise.javaee.glassfishtest.jsf」としています、を入力し、「名前(M)」(二番目赤枠内) にはクラス名「HelloBean」を指定します。クラス名は必ずHelloBeanとしてください。
「インターフェース(I)」は空白になっていると思いますので、右にある「追加(A)…」ボタンをクリックます。

「実装されたインターフェースの選択」ダイアログが表示されますので、上段赤枠内「インターフェースを選択してください(C)」に「Serializable」と入力します。すると「一致する項目(M)」に下段赤枠内「Serializable - java.io」が表示されますので、それを選択して「OK」をクリックしてください。
「新規Javaクラス」ダイアログに戻りますので、「インターフェース(I)」に「java.io.Serializable」が表示されたことを確認して「完了(F)」をクリックしてください。

HelloBean.javaが表示されましたら、以下の通り編集を行ってください。
package jp.bewise.javaee.glassfishtest.jsf;
import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class HelloBean implements Serializable {
private String name;
private String greeting;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGreeting() {
return greeting;
}
public String greet() {
greeting = "Hello, " + name + "!";
return null;
}
}
こちらも別の機会で詳しく説明しますが、「@Named」はXTMLファイルから「helloBean」という名前 (クラス名の先頭文字を小文字に変えたもの) でこのクラスのオブジェクトにアクセスできるように指示するものです。
「@RequestScoped」はこのクラスのオブジェクトがクライアントからリクエストがあると生成され、リクエストに対する応答が終わると破棄されることを指示します。
「getName」メソッドと「setName」メソッドは「name」プロパティへの読み書きを行うゲッターとセッターで、XHTMLファイルの<h:inputText>要素の初期値設定と入力値指定に使用されます。
「getGreeting」メソッドは「greeting」プロパティの読み出しを行うゲッターで、XHTMLファイルの<h:outputText>要素の出力地設定に使用されます。
「greet」メソッドはXHTMLの<h:commandButton>要素で表示されたボタンがクリックされたときに実行されるメソッドです。
編集したファイルを保存するとWebアプリケーションの作成は終了となります。
文字化け対策の導入
ところで、GlassFish 5.1はクライアントで入力された文字列を既定ではiso8859-1文字コードで解釈するという仕様となっています。このため、クライアントで入力された日本語文字列が文字化けすることがあります。
この問題の対策としてglassfish-web.xmlファイルを作成します。まずsrc/main/webapp/WEB-INFフォルダ、Eclipseのプロジェクト・エクスプローラーで「src」、「main」、「webapp」と順に展開して表示される「WEB-INF」フォルダを選択して右クリックメニューから「新規(W)」にある「ファイル」を選択します。

「新規ファイルの作成」ダイアログが表示されますので、上段赤枠内「親フォルダーを入力または選択(E)」が上図の通りとなっていることを確認し、下段赤枠内「ファイル名(M)」に「glassfish-web.xml」を入力して「完了(F)」をクリックします。
Eclipseで空のglassfish-web.xmlファイルが開きますので、以下を入力し、保存してください。
<?xml version="1.0" encoding="UTF-8"?>
<glassfish-web-app>
<parameter-encoding default-charset="UTF-8"/>
</glassfish-web-app>この設定はクライアントから受信した文字列の既定の文字コードをUTF-8に変更するもので、クライアントから日本語文字列が入力された場合も文字化けが起きなくなります。
Webアプリケーションの実行
それでは作成したWebアプリケーションを実行してみます。
プロジェクト・エクスプローラーで作成した「hello.xhtml」選択し、右クリックメニューから「実行(R)」の「1 サーバーで実行」を選択します。

「サーバーで実行」ダイアログが表示されますので、上段赤枠内「GlassFish5.1」をクリックして選択し、下段赤枠内「このプロジェクトを実行するときは常にこのサーバーを使用(P)」のチェックボックスにチェックをつけ、「完了(F)」をクリックします。

正常に動作していればブラウザが起動して上図のような画面が表示されます。
「名前を入力してください」のテキストボックスに文字列を入力し、「実行」ボタンをクリックすると「Hello, [入力した名前]!」が表示されます。
以上でGlassFish5.1を用いたEclipseでのJava EE開発環境の導入のうちJavaServer Facesに関する部分は終了となります。
今回作成したサンプルプログラムの説明やJPAの導入については、また別の機会とさせてください。
