「EclipseでJSFのmavenベースのプロジェクトを作るには」の版間の差分

提供: tknotebook
移動: 案内検索
(事前準備)
 
(1人の利用者による、間の18版が非表示)
1行: 1行:
[[Category:コンピュータ]][[Category:Java]]
+
[[Category:コンピュータ]][[Category:Java]][[Category:JSF]]
[[メインページ]]>[[コンピュータの部屋#Java]]>[[Java Tips]]
+
[[メインページ]]>[[コンピュータの部屋#Java]]>[[JSF Tips]]
  
  
JSFの解説本はほとんど IDE に NetBeans を使うことを勧めていますが、Eclipseも十分使えます。
+
JSFの解説本はほとんど IDE に NetBeans を使うことを勧めていますが、確かに、Eclipse では若干面倒なようです。
 +
でもちょっとしたことを知っていれば使えます。
  
maven ベースの JSF のプロジェクトの作成手順を紹介します。ややこしいことは全て
+
以下に '''maven ベースの JSF のプロジェクトの作成手順'''を紹介します。ややこしいことは大体
Eclipse がやってくれますので簡単です。XMLの設定ファイルをゼロから作ったりする必要はありません。
+
Eclipse がやってくれますので割と簡単です。
  
以下の手順は Pleiades All in One(4.6=Neon)で確認してあります。
+
以下の手順は Pleiades All in One(4.6=Neon)と Glassfish 4.1.1 で確認してあります。
 +
他の組み合わせはよくわかりません(^^;
  
 
==事前準備==
 
==事前準備==
  
 
予め JSFをサポートしているサーバをインストールし、ランタイムを'''[サーバ]'''プロジェクトに登録しておいてください。
 
予め JSFをサポートしているサーバをインストールし、ランタイムを'''[サーバ]'''プロジェクトに登録しておいてください。
'''[ファイル]→[新規]''' のダイアログで、'''[その他]→[サーバー]→[サーバー]'''から行えます。
+
ここでは Glassfish4.X サーバの手順を紹介します。
  
やり方はサーバー毎に少しづつ異なります。
 
  
これを事前に行っておかないと JSFのプロジェクトが作れませんので、まず使用するアプリケーションサーバの選定から
+
# '''[ファイル]→[新規]''' のダイアログで、'''[その他]→[サーバー]→[サーバー]''' を開く
始めるのが良いでしょう。GlassFish, TOMEE, WildFly などがお勧めです。
+
# '''Glassfish Tools''' を選択してインストールする。これは一度だけ行っておけばOK。
 +
# 再び '''[その他]→[サーバー]→[サーバー]''' を開くとGlassfish 4 が選択できるようになっているので登録を行う。
  
 
==mavenプロジェクトを作成する==
 
==mavenプロジェクトを作成する==
  
#mavenプロジェクトを新規作成する。
+
#mavenプロジェクトを新規作成を開始する。
 
#ウィザードの最初のダイアログで'''[シンプルなプロジェクトの作成]'''にチェックを入れる。必要ならワーキングセットを割り当てる。
 
#ウィザードの最初のダイアログで'''[シンプルなプロジェクトの作成]'''にチェックを入れる。必要ならワーキングセットを割り当てる。
 
#次のダイアログで、'''groupId''', '''artifactId''' を入力、パッケージングは '''war''' を選択し、'''[完了]'''を押す。
 
#次のダイアログで、'''groupId''', '''artifactId''' を入力、パッケージングは '''war''' を選択し、'''[完了]'''を押す。
  
これで mavenプロジェクトが出来上がりましたが、まだ Webプロジェクト用の汎用です。
+
これで mavenプロジェクトが出来上がりままずが、まだ Webプロジェクト汎用です。
  
==JSFが使えるようにする==
+
==JSFを使えるようにする==
  
 
出来上がったプロジェクトの[プロパティ」を開き、'''[プロジェクト・ファセット]'''を選びます。
 
出来上がったプロジェクトの[プロパティ」を開き、'''[プロジェクト・ファセット]'''を選びます。
35行: 37行:
 
#'''[Java]'''でバージョンを指定します。最近なら1.8でよいでしょう。選んだサーバのランタイムによっては 1.8が選べない場合もあります。
 
#'''[Java]'''でバージョンを指定します。最近なら1.8でよいでしょう。選んだサーバのランタイムによっては 1.8が選べない場合もあります。
 
#'''[JavaServer Faces]'''にチェックを入れ、バージョンを選んでください。最近なら 2.2でしょう。
 
#'''[JavaServer Faces]'''にチェックを入れ、バージョンを選んでください。最近なら 2.2でしょう。
#'''[動的Webモジュール]'''がチェックされていることを確認してください。
+
#'''[動的Webモジュール]'''がチェックされていることを確認してください。最近ならバージョンは3.1でしょう。
 +
#'''より詳しい構成が必要'''とダイアログの下の方に表示されますので、それをクリックしてダイアログを開き、'''[ユーザライブラリ]'''に'''Glassfish System Librray(JSF2.2)'''を選らび、OKを押してください。
 
#OKボタンを押します。
 
#OKボタンを押します。
  
以上で、JSF を使うための、faces-config.xml や web.xml の最低限の設定は、Eclipseが自動でやってくれます。
+
以上で、JSF を使うための、faces-config.xml や web.xml は、Eclipseが自動で作成しますが
後は作りたいソースと設定を加えてゆくだけです!
+
'''Neon が自動生成した web.xml ではうまく動かないようです。'''
 +
 
 +
具体的には、JSFのタグは正常に展開されますが、 '''バッキングビーンが EL式で認識されず、例外が発生してしまいます'''。
 +
 
 +
詳細は良く調べていないので、ひょっとすると Servlet仕様3.1 の場合のみかもしれませんが
 +
以下の web.xml を使ってください。
 +
これは実は NetBeans が自動生成する web.xml のコピーです(^^;
 +
 
 +
もし、他のサーバで同じような不具合があった場合は NetBeansが生成する web.xml をコピーした方がよいかもしれません。
 +
 
 +
Eclipseの web.xml との違いは'''サーブレット仕様のバージョン'''と '''context-param タグの有無'''のようです。
 +
 
 +
'''GlassFish以外ではもう少し追記する必要がある'''そうですが未確認です。
 +
 
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
 +
<web-app version="3.1" 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_3_1.xsd">
 +
    <context-param>
 +
        <param-name>javax.faces.PROJECT_STAGE</param-name>
 +
        <param-value>Development</param-value>
 +
    </context-param>
 +
    <servlet>
 +
        <servlet-name>Faces Servlet</servlet-name>
 +
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
 +
        <load-on-startup>1</load-on-startup>
 +
    </servlet>
 +
    <servlet-mapping>
 +
        <servlet-name>Faces Servlet</servlet-name>
 +
        <url-pattern>/faces/*</url-pattern>
 +
    </servlet-mapping>
 +
    <session-config>
 +
        <session-timeout>
 +
            30
 +
        </session-timeout>
 +
    </session-config>
 +
    <welcome-file-list>
 +
        <welcome-file>faces/index.xhtml</welcome-file>
 +
    </welcome-file-list>
 +
</web-app>

2016年11月9日 (水) 12:33時点における最新版

メインページ>コンピュータの部屋#Java>JSF Tips


JSFの解説本はほとんど IDE に NetBeans を使うことを勧めていますが、確かに、Eclipse では若干面倒なようです。 でもちょっとしたことを知っていれば使えます。

以下に maven ベースの JSF のプロジェクトの作成手順を紹介します。ややこしいことは大体 Eclipse がやってくれますので割と簡単です。

以下の手順は Pleiades All in One(4.6=Neon)と Glassfish 4.1.1 で確認してあります。 他の組み合わせはよくわかりません(^^;

事前準備

予め JSFをサポートしているサーバをインストールし、ランタイムを[サーバ]プロジェクトに登録しておいてください。 ここでは Glassfish4.X サーバの手順を紹介します。


  1. [ファイル]→[新規] のダイアログで、[その他]→[サーバー]→[サーバー] を開く
  2. Glassfish Tools を選択してインストールする。これは一度だけ行っておけばOK。
  3. 再び [その他]→[サーバー]→[サーバー] を開くとGlassfish 4 が選択できるようになっているので登録を行う。

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

  1. mavenプロジェクトを新規作成を開始する。
  2. ウィザードの最初のダイアログで[シンプルなプロジェクトの作成]にチェックを入れる。必要ならワーキングセットを割り当てる。
  3. 次のダイアログで、groupId, artifactId を入力、パッケージングは war を選択し、[完了]を押す。

これで mavenプロジェクトが出来上がりままずが、まだ Webプロジェクト汎用です。

JSFを使えるようにする

出来上がったプロジェクトの[プロパティ」を開き、[プロジェクト・ファセット]を選びます。

  1. [ランタイム]タブを選び、使うサーバのランタイムにチェックを入れます。
  2. [Java]でバージョンを指定します。最近なら1.8でよいでしょう。選んだサーバのランタイムによっては 1.8が選べない場合もあります。
  3. [JavaServer Faces]にチェックを入れ、バージョンを選んでください。最近なら 2.2でしょう。
  4. [動的Webモジュール]がチェックされていることを確認してください。最近ならバージョンは3.1でしょう。
  5. より詳しい構成が必要とダイアログの下の方に表示されますので、それをクリックしてダイアログを開き、[ユーザライブラリ]Glassfish System Librray(JSF2.2)を選らび、OKを押してください。
  6. OKボタンを押します。

以上で、JSF を使うための、faces-config.xml や web.xml は、Eclipseが自動で作成しますが Neon が自動生成した web.xml ではうまく動かないようです。

具体的には、JSFのタグは正常に展開されますが、 バッキングビーンが EL式で認識されず、例外が発生してしまいます

詳細は良く調べていないので、ひょっとすると Servlet仕様3.1 の場合のみかもしれませんが 以下の web.xml を使ってください。 これは実は NetBeans が自動生成する web.xml のコピーです(^^;

もし、他のサーバで同じような不具合があった場合は NetBeansが生成する web.xml をコピーした方がよいかもしれません。

Eclipseの web.xml との違いはサーブレット仕様のバージョンcontext-param タグの有無のようです。

GlassFish以外ではもう少し追記する必要があるそうですが未確認です。

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.1" 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_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>