CentOSでJSFのプロジェクトを作る

  • 環境
    • CentOS Linux release 7.8.2003 (Core)
    • Payara Server 5.194
    • Eclipse IDE for Enterprise Java Developers.Version: 2020-03 (4.15.0)

参考資料

久しぶりにJSF用のプロジェクトを1から作ろうと思い立った。
記憶も記録も美しいまでに消えていた。
以下のサイト様を見ながら記憶と記録を作り直す。
ittoybox.com

EclipseにPayaraを設定する

Payaraを配置する

# 1. 任意のディレクトリへ移動
$ cd /opt
# 2. Payaraのzipファイルをダウンロード
$ wget https://repo1.maven.org/maven2/fish/payara/distributions/payara/5.194/payara-5.194.zip
# 3. zipファイルを解凍する
$ unzip payara-5.194.zip
# 4. 使い終わったzipファイルを削除する
$ rm payara-5.194.zip
# 5. .bash_profileで環境変数にPayaraを設定する
$ vi ~/.bash_profile
$ cat ~/.bash_profile 
$ export PATH=$PATH:/opt/payara5/bin
$ source ~/.bash_profile
# 6. 実行できるように権限設定する
RUN chmod -R 777 /opt/payara5/glassfish

Eclipseに設定する

qiita.com

Mavenプロジェクトを作成する

  1. [Package Explorer]にカーソルを入れて「Ctrl + N」で新規作成ダイアログを表示する。
  2. [Maven] > [Maven Project] > [Next]ボタン
    • f:id:ponsuke_tarou:20200716213456p:plain
  3. [Create a simple project(skip archetype selection)]チェックボックスをONにする > [Next]
  4. 以下を設定して[Finish]ボタンでプロジェクトを作成する
  5. この時点でエラーがあっても見なかったことにする

f:id:ponsuke_tarou:20200716213657p:plain

コンパイラを設定する

  1. [Package Explorer]でプロジェクトを選択 > 「Alt + Enter」でプロパティダイアログを表示する
  2. [Java Compiler] > [Use compliance from execution environment 'JavaSE-1.5 on the 'Java Build Path']チェックボックスをOFFにする
  3. [Compiler compliance level]で「11」を選択 > [Apply]ボタンで適用する
    • f:id:ponsuke_tarou:20200716215324p:plain
  4. 以下のメッセージダイアログが表示されるので[Yes]でビルドを行う

JSFを設定する

  1. [Project Facet] > [Convert to Faceted...]リンクを押下して一覧を表示する
    • f:id:ponsuke_tarou:20200716215510p:plain
  2. [Java]をONにして[Version]を「11」にする
  3. [JavaServer Faces]をONにして[Version]を「2.3」にする
  4. [Dynamic Web Module]をONにして[Version]を「4.0」にする
  5. [Runtimes]タブ > 表示されたPayaraをONにする
    • f:id:ponsuke_tarou:20200716224248p:plain
  6. 下の方に出てくる[Further configuration required...]リンクを押下して[Modify Faceted Project]画面を表示する
  7. [Content directory : ]を設定する(今回はデフォルトのまま)
    • Content directoryは、HTMLやCSSや画像ファイルなどのコンテンツを格納するディレクトリルート
  8. [Generate web.xml....... : ]チェックボックスをONにする > [Next]ボタン
    • f:id:ponsuke_tarou:20200716224434p:plain
  9. 特に変更はしないで[OK]ボタンでダイアログを閉じる
    • f:id:ponsuke_tarou:20200716224621p:plain
  10. [Aply and Close]ボタンでプロパティダイアログを閉じる
    • プロジェクトにエラーが有った場合は、エラーが消える(はず)
pom.xmlJSFのライブラリを定義する
  1. Maven Repository: org.glassfish » javax.facesから任意のバージョンのMaven用定義をコピーする
  2. Eclipseでpom.xmlを開いて定義を貼り付ける
  3. Maven Repository: org.primefaces » primefacesから任意のバージョンのMaven用定義をコピーする
  4. [Package Explorer]でプロジェクトを選択 > 「Alt + F5」でダイアログを表示 > [OK]ボタンでMavenを更新する
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
...省略...
  <dependencies>
    <dependency>
      <groupId>org.glassfish</groupId>
      <artifactId>javax.faces</artifactId>
      <version>2.3.9</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.primefaces/primefaces -->
    <dependency>
      <groupId>org.primefaces</groupId>
      <artifactId>primefaces</artifactId>
      <version>8.0</version>
    </dependency>
  </dependencies>
</project>

ServletのバージョンをDynamic Web Moduleに合わせる

  1. src/main/webapp/WEB-INF/web.xmlを開く
  2. web-appの記載をDynamic Web Moduleに合わせる
  3. [Package Explorer]でプロジェクトを選択 > 「Alt + F5」でダイアログを表示 > [OK]ボタンでMavenを更新する
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">
<!-- 省略 -->

動かしてみる

ページを作成する

  1. [webapp]を選択して「Ctrl + N」で新規ダイアログを開く
  2. [Web] > [HTML File] > [Next]ボタンで進む > [File name:]に「index.xhtml」を入力し[Next]ボタン
  3. [Templates:] > [New Facelet Composition Page](新規Facelet構成ページ) > [Finish]ボタンで新規ページを作成する
    • f:id:ponsuke_tarou:20200720193154p:plain
  4. 以下のコードをindex.xhtmlに記載する
<!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:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui">

<head>
    <title>MavenでJSFのプロジェクトをEclipseで作ってみた。</title>
</head>
<body>
    JSFのプロジェクト
</body>
</html>

Payaraを起動する

  1. [Package Explorer]でプロジェクトを選択して右クリック
  2. [Run As] > [Run On Server] > ダイアログでPayaraを選択して起動する
  3. http://localhost:8080/tryJsf/index.xhtmlにアクセスしてページが表示されたら動作確認完了

f:id:ponsuke_tarou:20200720224119p:plain
Eclipseのブラウザで見るとこんな感じ

失敗したこと

qiita.com
qiita.com
qiita.com

f:id:ponsuke_tarou:20200720224310j:plain
ゆの宿上越館の超美味しい鮎