「Seamを使用したプロジェクトの作成」の編集履歴(バックアップ)一覧はこちら
「Seamを使用したプロジェクトの作成」(2006/10/22 (日) 18:31:34) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*JBoss Seamを利用したプロジェクトの作成
JBoss Seamのセットアップはかなり煩雑です。
JSFとEJB3を統合する、というSeamのコンセプトからして、本格的なEARプロジェクトを作成する必要がある上、Seam独自の設定をいくつも施してあげなくてはなりません。
ただ、Seamの内部動作を推し量るためにはこれらの設定ファイルがどういう意味を持つのか知る必要があります。まずは頑張って一つ一つセットアップしていきましょう。
**勉強会用Eclipseセットアップ
勉強会ではWTPプラグイン入りのEclipseを使用して、サンプルアプリケーションを作成しましょう。
***ターゲットランタイムの設定
「ウィンドウ→設定→サーバー→インストール済みランタイム→追加」で、JBoss v4.0を指定してJBossインストールディレクトリを指定します。
***MyNumberGuessEARプロジェクトの作成
-新規プロジェクト→J2EE→エンタープライズ・アプリケーション・プロジェクト
-ターゲット・ランタイムにJBoss v4.0を指定する
***MyNumberGuessEJBプロジェクト
新規プロジェクト→EJB→EJBプロジェクト
-ターゲット・ランタイムにJBoss v4.0を指定する
-「EARにプロジェクトを追加」チェックボックスにチェックを入れ、「MyNumberGuessEAR」を指定する
***MyNumberGuessWebプロジェクト(新規プロジェクト→Web→動的Webプロジェクト)
-ターゲット・ランタイムにJBoss v4.0を指定する
-「EARにプロジェクトを追加」チェックボックスにチェックを入れ、「MyNumberGuessEAR」を指定する
**web.xmlの設定
Seamを利用したWebアプリケーションが起動する際、Seamは様々な処理を行うため、リスナ(SeamListener)の登録が必要です。
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
また、以下のフィルタ(SeamRedirectFilter)を追加しておき、JSFのサーブレットが持つURLパターンと一致させておきます。
<filter>
<filter-name>Seam Redirect Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamRedirectFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Redirect Filter</filter-name>
<url-pattern>*.seam</url-pattern>
</filter-mapping>
JSF用の設定もいくつか必要なので、それらを全て追加したweb.xmlは以下のようになります(bookingサンプルから引用)。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- Seam -->
<listener>
<listener-class>
org.jboss.seam.servlet.SeamListener
</listener-class>
</listener>
<!-- Propagate conversations across redirects -->
<filter>
<filter-name>Seam Redirect Filter</filter-name>
<filter-class>
org.jboss.seam.servlet.SeamRedirectFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Redirect Filter</filter-name>
<url-pattern>*.seam</url-pattern>
</filter-mapping>
<!-- JSF -->
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</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>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
<!-- MyFaces -->
<listener>
<listener-class>
org.apache.myfaces.webapp.StartupServletContextListener
</listener-class>
</listener>
<!-- JSF RI -->
<!--
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
-->
</web-app>
**WEB-INF/components.xmlの設定(jndiPattern)
**WEB-INF/faces-config.xmlの設定(org.jboss.seam.jsf.SeamPhaseListener)
**ejb-jar.xmlの設定(全てのセッションBeanにSeamInterceptorを付加)
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
metadata-complete="true" version="3.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
**persistence.xmlにデータソースの場所を指定
*JBoss Seamを利用したプロジェクトの作成
JBoss Seamのセットアップはかなり煩雑です。
JSFとEJB3を統合する、というSeamのコンセプトからして、本格的なEARプロジェクトを作成する必要がある上、Seam独自の設定をいくつも施してあげなくてはなりません。
ただ、Seamの内部動作を推し量るためにはこれらの設定ファイルがどういう意味を持つのか知る必要があります。まずは頑張って一つ一つセットアップしていきましょう。
**勉強会用Eclipseセットアップ
勉強会ではWTPプラグイン入りのEclipseを使用して、サンプルアプリケーションを作成しましょう。
***ターゲットランタイムの設定
「ウィンドウ→設定→サーバー→インストール済みランタイム→追加」で、JBoss v4.0を指定してJBossインストールディレクトリを指定します。
***MyNumberGuessEARプロジェクトの作成
-新規プロジェクト→J2EE→エンタープライズ・アプリケーション・プロジェクト
-ターゲット・ランタイムにJBoss v4.0を指定する
***MyNumberGuessEJBプロジェクト
新規プロジェクト→EJB→EJBプロジェクト
-ターゲット・ランタイムにJBoss v4.0を指定する
-「EARにプロジェクトを追加」チェックボックスにチェックを入れ、「MyNumberGuessEAR」を指定する
***MyNumberGuessWebプロジェクト(新規プロジェクト→Web→動的Webプロジェクト)
-ターゲット・ランタイムにJBoss v4.0を指定する
-「EARにプロジェクトを追加」チェックボックスにチェックを入れ、「MyNumberGuessEAR」を指定する
**web.xmlの設定
Seamを利用したWebアプリケーションが起動する際、Seamは様々な処理を行うため、リスナ(SeamListener)の登録が必要です。
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
また、以下のフィルタ(SeamRedirectFilter)を追加しておき、JSFのサーブレットが持つURLパターンと一致させておきます。
<filter>
<filter-name>Seam Redirect Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamRedirectFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Redirect Filter</filter-name>
<url-pattern>*.seam</url-pattern>
</filter-mapping>
JSF用の設定もいくつか必要なので、それらを全て追加したweb.xmlは以下のようになります(bookingサンプルから引用)。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- Seam -->
<listener>
<listener-class>
org.jboss.seam.servlet.SeamListener
</listener-class>
</listener>
<!-- Propagate conversations across redirects -->
<filter>
<filter-name>Seam Redirect Filter</filter-name>
<filter-class>
org.jboss.seam.servlet.SeamRedirectFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Redirect Filter</filter-name>
<url-pattern>*.seam</url-pattern>
</filter-mapping>
<!-- JSF -->
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</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>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
<!-- MyFaces -->
<listener>
<listener-class>
org.apache.myfaces.webapp.StartupServletContextListener
</listener-class>
</listener>
<!-- JSF RI -->
<!--
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
-->
</web-app>
**WEB-INF/components.xmlの設定(jndiPattern)
**WEB-INF/faces-config.xmlの設定(org.jboss.seam.jsf.SeamPhaseListener)
**ejb-jar.xmlの設定(全てのセッションBeanにSeamInterceptorを付加)
<?xml version="1.0"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
metadata-complete="true" version="3.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
**persistence.xmlにデータソースの場所を指定
表示オプション
横に並べて表示:
変化行の前後のみ表示: