JBoss Seam関連
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
] [
Twitter
]
開始行:
→Java関連
→JSF(JavaServer Faces)関連
→Webアプリ開発
#contents
* 関連Web [#yc679f18]
-http://www.jboss.org/projects/
-http://seamframework.org/
-http://www.jboss.com/products/seam
-[[JBOSS AS7 Documentation>https://docs.jboss.org/author/...
-[[日本JBossユーザ・グループ>http://www.jbug.jp/cgi-bin/f...
-[[JBossがおかしい!あなたならどうしますか?>http://d.hat...
*Document [#p9a27fcd]
-[[JBoss.org Community Documentation(英語)>http://www.jbo...
--[[JBoss Application Server>http://www.jboss.org/jbossas...
---[[Installation Guide>http://www.jboss.org/file-access/...
--[[JBoss IDE for Eclipse>http://www.jboss.org/jbosside/d...
--[[JBoss Seam>http://www.seamframework.org/Documentation]]
---[[JBoss Seam 1.2 API reference>http://docs.jboss.com/s...
---[[JBoss Seamドキュメント和訳>http://www.jbug.jp/trans/...
---[[上記の英語版>http://docs.jboss.com/seam/1.2.1.GA/ref...
--[[RichFaces/Ajax4jsf>http://www.jboss.org/jbossrichface...
--[[JBoss EJB3>http://docs.jboss.org/ejb3]]
--[[Hibernate>http://www.hibernate.org/5.html]]
--JBoss Rules(Drools)
--JBoss jBPM →ビジネスプロセス管理のページを参照
-[[JBoss Developer Studio Document>http://www.redhat.com/...
-[[JBoss ホワイトペーパー(日本語)>http://www.jp.redhat....
--Seamチュートリアル(上・下)はJBoss Developer Studioを...
-[[JBoss RichFaces>http://www.jboss.org/jbossrichfaces/do...
-[[JBoss Seam FAQ@JBoss.org>http://www.jboss.org/jbosssea...
-[[JBoss Seam FAQ@SeamFramework.org>http://www.seamframew...
-[[KnowledgeBase Overview>http://www.seamframework.org/Do...
-[[Link to External Seam Documentation@SeamFramework.org>...
*Download [#ad1275a6]
-[[JBoss Developer Studio(有料)の導入>http://www26.atwiki...
-[[JBoss Seam Download>http://www.seamframework.org/Downl...
-[[JBoss Application Server download>http://www.jboss.org...
-[[JBoss Tools Project>http://www.jboss.org/tools/]]
-[[JBoss Application Platform>http://www.jboss.com/produc...
--JBoss ASの有料版?
*入門・紹介系記事 [#f668be40]
-[[JBoss が Developer Studioと1.0とTools2.0を展開@InfoQ>h...
-[[JBoss Seamの導入@InfoQ>http://www.infoq.com/jp/article...
--Seam Webアプリケーションの記述は、概念的に非常に単純で...
---エンティティオブジェクトはデータモデルを表す。エンティ...
---JSF Webページはユーザーインターフェイスを表示する。ペ...
---EJB3 セッションBeanまたはアノテーション付きSeam POJOは...
-[[JBoss勉強会発表資料>http://www.jbug.jp/cgi-bin/fswiki/...
-[[Webの上のポジョをステートフルにつなぐJBoss Seam>http:/...
-[[JBoss Seam - EJB3.0時代のフレームワークを使いこなす>ht...
--JBoss Seamは、Java EE 5アプリケーションにおいてEJB 3.0(...
--JBoss Eclipse IDEというプラグインが提供されている
--Managed BeanとしてEJBコンポーネントを扱える(Managed Bea...
*特徴 [#be78a306]
-双方向のDI(バイジェクション)
--Expression Languageを使って式の値をインジェクトも可能
--コンポーネント間の参照はコンテキストを介して間接的に行...
--@Inアノテーションでメソッド実行前にコンテキストからオブ...
--@Outアノテーションでメソッド実行後にコンテキストにオブ...
--アプリケーションの実行中に何度でも注入が行われる
--参考:[[バイジェクションとコンテキスト>http://www.ne.jp...
-7つのスコープ(ここでいうスコープとは、コンテキストにセ...
-というか、文脈しだいでほぼスコープ=コンテキストと考えて...
-一種の名前空間みたいなものと思ってもよい
--Application アプリケーションの開始から終了まで
--Business Process ビジネス・プロセスの開始から終了まで
--Session セッションの開始から終了まで
--Conversation 対話の開始から終了まで
---対話とは、@Beginをつけたメソッドから@Endをつけたメソッ...
---一つのPCで複数のWebブラウザを立ち上げた場合、ブラウザ...
--Event リクエストの開始から終了まで
--Page ページの開始から終了まで
--Stateless 状態を管理しない
-フォームとEJBの結びつきはアノテーションで設定するスコー...
--1スコープ内にひとつの名前の変数しか持てない。
--ELで参照されたときに範囲の短いスコープから順に名前を検...
*JBoss Application Serverのzipファイルからのインストール...
-適当な場所にZIPを展開
-環境変数JAVA_HOMEにJavaのルートをセット
例)C:\Program Files\Java\jdk1.5.0_16
-%JAVA_HOME%\jre\bin にパスを切る
-サーバの起動
--<zipを展開したディレクトリ>\bin\run.batを実行する
--注意:このときポート 8080を使うアプリ(例えばPOPFileと...
-起動したら以下の場所をWebブラウザでアクセスしてみる
http://localhost:8080/
-"JBoss Online Resouces" というページが表示されたら成功
-失敗したら <zipを展開したディレクトリ>\server\default\lo...
-起動したサーバを終了させるときはコンソールからCtrl+Cを押...
**アンインストール [#d7eefea2]
-zipからインストールした場合は単に解凍したディレクトリを...
*Tips [#c03502ff]
-[[Seam Remoting解説>http://www.jbug.jp/trans/jboss-seam1...
--Seam Remotingってのはクライアント側のJavaScriptからサー...
-[[Seamのホットデプロイ>http://d.hatena.ne.jp/tokuryo/200...
--JBoss4では、warだとホットデプロイされる。earだとホット...
--JBoss5では、warもearもホットデプロイできるらしい。
-ページのテーマを切り替える
--components.xmlに以下のような記述をする
<component name="org.jboss.seam.theme.themeSelector">
<property name="availableThemes">
<value>default</value>
<value>printable</value>
<value>text-only</value>
</property>
<property name="cookieEnabled">true</property>
</component>
--内臓コンポーネント themeSelectorの themeプロパティに希...
themeSelector.theme="default";
themeSelector.select();
--ドロップダウンによる選択の例
<h:selectOneMenu value="#{themeSelector.theme}">
<f:selectItems value="#{themeSelector.themes}"/>
</h:selectOneMenu><br/>
<h:commandButton action="#{themeSelector.select}" value=...
--Beggining Seam Chap.8 p235あたりを参照
-Dropdownを動的に用意する
<h:selectOneMenu value="#{hoge}">
<f:selectItems value="#{hogeItems}" />
</h:selectOneMenu>
-JNDIネームの設定は WEB-INF/components.xml にある(必須で...
--components/component/property name="jndiPattern"
-Seam Interceptorの設定は ejb-jar.xml にある(必須ではな...
--ejb-jar/interceptors/interceptor/interceptor-class
-各ページのURLの拡張子を.seamから.htmlに変えるには
--web.xmlのservlet-mappingの下のurl-patternタグで設定する
<url-mapping>*.seam</url-mapping>
↓
<url-mapping>*.html</url-mapping>
これはseamの仕様というよりJavaEEの仕様
-[[jboss-seam.jarがデプロイされない>http://d.hatena.ne.jp...
--JBossToolsで作ったearをデプロイしたら、earプロジェクト...
--色々調べたら、以下の記述を消せばいいみたいだよ。
application.xmlの
<module>
<ejb>jboss-seam.jar</ejb>
</module>
-com.sun.facelets.compiler.TagLibraryConfig loadImplicit ...
--http://www.andromda.org/jira/browse/JSF-30
--One annoying thing about using Facelets with SEAM/EJB3/...
07:38:26,843 ERROR \[STDERR\] Nov 29, 2006 7:38:26 AM
com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/C:/java/jboss-4.0.5....
/./tmp/deploy/tmp64384starter1.ear-contents/webapp-exp.w...
facelets.jar!/META-INF/jsf-ui.taglib.xml
--So, I've finally figured out what this means. Basically...
--If java.util.logging were a pet dog I'd say: Bad loggin...
--The folks at Sun should know better than to write to Sy...
--Solution #1
--Ignore the messages. They are only errors because Conso...
--Solution #2
--Use a different logging handler by using a different ja...
--Solution #3
--Experimental - Use a ContextListener to reconfigure JUL...
*対話の制御 [#p879b94b]
-あるページに対話中でないときにアクセスしたらリダイレクト...
--pages.xmlに以下のように設定
<pages>
<page view-id="hoge_url" no-conversation-view-id="/ind...
</pages>
-対話のリストは org.jboss.seam.core.ConversationList で取...
--個々の対話は org.jboss.seam.core.ConversationEntry オブ...
--(Beggining Seam p175付近)
-対話をスタートするタグ
<h:commandLink action="hoge" value="start conv">
<s:conversationPropagation type="begin">
</h:commandLink>
--typeには begin, end, join, nested, none がある
-対話のタイムアウトの設定
--WEB-INF内components.xml
<core:manager conversation-timeout="120000" />
--components.xmlはMETA-INFにもあるようだが、どういう使い...
*アノテーション [#p6a3dbae]
-@RequestParameter
--URLからパラメータを取得するときに使う。下方の「URLからG...
-Stateful Session Beanには Removeメソッドが必要
--メソッド名がRemoveでないといけないというわけではない(...
--@Statefulをつけたクラスには@Removeアノテーションをつけ...
--そのBeanを廃棄しても良い状態になったら(Seamへの通知とし...
--Seam側ではそれを目印としてBeanに割り当てた資源を回収する
-[[アノテーションの解説>http://www.jbug.jp/trans/jboss-se...
-@Observer
--@Observer("hoge") とやったメソッドはSeam組み込みコンポ...
-@DataModel, @DataModelSelection ("Beggining JBoss Seam" ...
--<h:dataTable>と一緒に使うことが多い
--java.util.Collections のListをdataTableと連動させるとき...
--SeamはListを javax.faces.model.DataModelにコンバートする
--テーブル上で選択された行が @DataModelSelectionをつけた...
-@Factory
--@Factory(Name)というアノテーションをつけたメソッドは、...
--つまりデータモデルの初期化機構=Factory Methodとして使える
--参考:http://docs.jboss.com/seam/1.2.1.GA/api/org/jboss/...
-@Role
--一つのクラスを異なるスコープで使いたいときに使える
@Name("hoge")
@Entity
@Scope(SESSION)
@Role(name="hogeEvent", scope=EVENT)
public class Hoge{
...
}
--さらにもう一つ増やしたくなったら
@Name("hoge")
@Entity
@Scope(SESSION)
@Roles({
@Role(name="hogeEvent", scope=EVENT) //ここにカンマを...
@Role(name="hogePage", scope=PAGE)
})
public class Hoge{
...
}
*認証の仕組み [#v11e84f7]
-[[Seamの認証機構>http://www.jbug.jp/trans/jboss-seam1.2....
--ELにidentity.loginなどの内臓クラスのメソッドが指定され...
--自分で作った認証メソッドとidentity.loginの対応付けはcom...
<security:identity authenticate-method="#{authenticator....
-ページのアクセス制限
--ページ単位のアクセスの設定は pages.xml で行う
<page view-id="/hoge/*">
<restrict>#{identity.loggedIn}</restrict>
</page>
--ELの評価がtrueならページが表示される(はず。未確認)
--falseなら NotLoggedInExceptionがとぶ
--ログインの他にロールも必要ならこういう感じになる
<page view-id="/hoge/*">
<restrict>#{identity.loggedIn and s:hasRole('ADMIN')...
</page>
--login-required属性という手もある
<page view-id="/hoge/*" login-required="true" />
-NotLoggedInExceptionがとんだらどうするかの設定
--pages.xmlのexceptionタグで定義する
<exception class="org.jboss.seam.security.NotLoggedInExc...
<redirect view-id="/login.xhtml">
<message>ログインしていないと閲覧できません</messa...
</redirect>
</exception>
--上記ではloginのページにリダイレクトしてメッセージを出し...
*RichFaces [#c5415640]
-RichFaces is an open source framework that adds Ajax cap...
*EL(Expression Language) [#s51df338]
-Unified EL for JSP and JSF
--http://today.java.net/pub/a/today/2006/03/07/unified-js...
-JSFのビューからの指定方法
--#{コンポーネント名.プロパティ名}
--#{コンポーネント名.メソッド名}
*Seamタグ [#h7d419cf]
-<s:validateAll>
--囲った部分のエレメントをすべてバリデートし、エラーがあ...
*examples下にあるサンプルについて [#w148ff93]
-ビルド手順などはこちら
--http://www.jbug.jp/trans/jboss-seam1.0.1GA/ja/html/tuto...
-Seamのディレクトリにあるbuild.propertiesに jboss.homeの...
正しい記述例
jboss.home = D:\\MyData\\java\\jboss-AS4.2.3.GA
これではダメです
jboss.home = D:\MyData\java\jboss-AS4.2.3.GA
-JBoss Seamのbookingというサンプルをant(ビルド→deploy)し...
2008-09-15 01:10:39,901 ERROR [org.apache.catalina.core....
[jboss.web].[localhost].[/seam-booking]] クラス
org.apache.myfaces.webapp.StartupServletContextListener の
アプリケーションリスナの設定中にエラーが発生しました
--これはJBoss ASのバージョンが4.2.3であるのに対し、使った...
---参考にしたblog記事:http://d.hatena.ne.jp/fusatsukatsuj...
--Seamの2.0.3CR1を落としてきてbooking exampleをantしたら...
*JBossの正常起動判定 [#x81abafe]
-run.shは非同期なので正常に起動されたかどうかは判定できない
-twiddle.shというスクリプトがあり、これでJMXにアクセスする
$ ./twiddle.sh -s <server> -u <user> -p <pass> query 'jb...
*URLからGETパラメータを得るには [#y9ee0752]
-エンティティ側に以下のメンバを用意
@Stateful
@AutoCreate
@Name("hogeBean")
@Scope(ScopeType.CONVERSATION)
public class HogeBean
...
/** パラメータ */
@RequestParameter("customer_id")
private String customerId;
-呼び出し側
http://svr/contentroot/hogehoge.html?customer_id=xxxxx
-pages.xmlにメソッド記述
<page view-id="hogehoge.html" action="#{hogeBean.hoge()}...
これでhoge()メソッド内でcustomer_idを参照できる模様
終了行:
→Java関連
→JSF(JavaServer Faces)関連
→Webアプリ開発
#contents
* 関連Web [#yc679f18]
-http://www.jboss.org/projects/
-http://seamframework.org/
-http://www.jboss.com/products/seam
-[[JBOSS AS7 Documentation>https://docs.jboss.org/author/...
-[[日本JBossユーザ・グループ>http://www.jbug.jp/cgi-bin/f...
-[[JBossがおかしい!あなたならどうしますか?>http://d.hat...
*Document [#p9a27fcd]
-[[JBoss.org Community Documentation(英語)>http://www.jbo...
--[[JBoss Application Server>http://www.jboss.org/jbossas...
---[[Installation Guide>http://www.jboss.org/file-access/...
--[[JBoss IDE for Eclipse>http://www.jboss.org/jbosside/d...
--[[JBoss Seam>http://www.seamframework.org/Documentation]]
---[[JBoss Seam 1.2 API reference>http://docs.jboss.com/s...
---[[JBoss Seamドキュメント和訳>http://www.jbug.jp/trans/...
---[[上記の英語版>http://docs.jboss.com/seam/1.2.1.GA/ref...
--[[RichFaces/Ajax4jsf>http://www.jboss.org/jbossrichface...
--[[JBoss EJB3>http://docs.jboss.org/ejb3]]
--[[Hibernate>http://www.hibernate.org/5.html]]
--JBoss Rules(Drools)
--JBoss jBPM →ビジネスプロセス管理のページを参照
-[[JBoss Developer Studio Document>http://www.redhat.com/...
-[[JBoss ホワイトペーパー(日本語)>http://www.jp.redhat....
--Seamチュートリアル(上・下)はJBoss Developer Studioを...
-[[JBoss RichFaces>http://www.jboss.org/jbossrichfaces/do...
-[[JBoss Seam FAQ@JBoss.org>http://www.jboss.org/jbosssea...
-[[JBoss Seam FAQ@SeamFramework.org>http://www.seamframew...
-[[KnowledgeBase Overview>http://www.seamframework.org/Do...
-[[Link to External Seam Documentation@SeamFramework.org>...
*Download [#ad1275a6]
-[[JBoss Developer Studio(有料)の導入>http://www26.atwiki...
-[[JBoss Seam Download>http://www.seamframework.org/Downl...
-[[JBoss Application Server download>http://www.jboss.org...
-[[JBoss Tools Project>http://www.jboss.org/tools/]]
-[[JBoss Application Platform>http://www.jboss.com/produc...
--JBoss ASの有料版?
*入門・紹介系記事 [#f668be40]
-[[JBoss が Developer Studioと1.0とTools2.0を展開@InfoQ>h...
-[[JBoss Seamの導入@InfoQ>http://www.infoq.com/jp/article...
--Seam Webアプリケーションの記述は、概念的に非常に単純で...
---エンティティオブジェクトはデータモデルを表す。エンティ...
---JSF Webページはユーザーインターフェイスを表示する。ペ...
---EJB3 セッションBeanまたはアノテーション付きSeam POJOは...
-[[JBoss勉強会発表資料>http://www.jbug.jp/cgi-bin/fswiki/...
-[[Webの上のポジョをステートフルにつなぐJBoss Seam>http:/...
-[[JBoss Seam - EJB3.0時代のフレームワークを使いこなす>ht...
--JBoss Seamは、Java EE 5アプリケーションにおいてEJB 3.0(...
--JBoss Eclipse IDEというプラグインが提供されている
--Managed BeanとしてEJBコンポーネントを扱える(Managed Bea...
*特徴 [#be78a306]
-双方向のDI(バイジェクション)
--Expression Languageを使って式の値をインジェクトも可能
--コンポーネント間の参照はコンテキストを介して間接的に行...
--@Inアノテーションでメソッド実行前にコンテキストからオブ...
--@Outアノテーションでメソッド実行後にコンテキストにオブ...
--アプリケーションの実行中に何度でも注入が行われる
--参考:[[バイジェクションとコンテキスト>http://www.ne.jp...
-7つのスコープ(ここでいうスコープとは、コンテキストにセ...
-というか、文脈しだいでほぼスコープ=コンテキストと考えて...
-一種の名前空間みたいなものと思ってもよい
--Application アプリケーションの開始から終了まで
--Business Process ビジネス・プロセスの開始から終了まで
--Session セッションの開始から終了まで
--Conversation 対話の開始から終了まで
---対話とは、@Beginをつけたメソッドから@Endをつけたメソッ...
---一つのPCで複数のWebブラウザを立ち上げた場合、ブラウザ...
--Event リクエストの開始から終了まで
--Page ページの開始から終了まで
--Stateless 状態を管理しない
-フォームとEJBの結びつきはアノテーションで設定するスコー...
--1スコープ内にひとつの名前の変数しか持てない。
--ELで参照されたときに範囲の短いスコープから順に名前を検...
*JBoss Application Serverのzipファイルからのインストール...
-適当な場所にZIPを展開
-環境変数JAVA_HOMEにJavaのルートをセット
例)C:\Program Files\Java\jdk1.5.0_16
-%JAVA_HOME%\jre\bin にパスを切る
-サーバの起動
--<zipを展開したディレクトリ>\bin\run.batを実行する
--注意:このときポート 8080を使うアプリ(例えばPOPFileと...
-起動したら以下の場所をWebブラウザでアクセスしてみる
http://localhost:8080/
-"JBoss Online Resouces" というページが表示されたら成功
-失敗したら <zipを展開したディレクトリ>\server\default\lo...
-起動したサーバを終了させるときはコンソールからCtrl+Cを押...
**アンインストール [#d7eefea2]
-zipからインストールした場合は単に解凍したディレクトリを...
*Tips [#c03502ff]
-[[Seam Remoting解説>http://www.jbug.jp/trans/jboss-seam1...
--Seam Remotingってのはクライアント側のJavaScriptからサー...
-[[Seamのホットデプロイ>http://d.hatena.ne.jp/tokuryo/200...
--JBoss4では、warだとホットデプロイされる。earだとホット...
--JBoss5では、warもearもホットデプロイできるらしい。
-ページのテーマを切り替える
--components.xmlに以下のような記述をする
<component name="org.jboss.seam.theme.themeSelector">
<property name="availableThemes">
<value>default</value>
<value>printable</value>
<value>text-only</value>
</property>
<property name="cookieEnabled">true</property>
</component>
--内臓コンポーネント themeSelectorの themeプロパティに希...
themeSelector.theme="default";
themeSelector.select();
--ドロップダウンによる選択の例
<h:selectOneMenu value="#{themeSelector.theme}">
<f:selectItems value="#{themeSelector.themes}"/>
</h:selectOneMenu><br/>
<h:commandButton action="#{themeSelector.select}" value=...
--Beggining Seam Chap.8 p235あたりを参照
-Dropdownを動的に用意する
<h:selectOneMenu value="#{hoge}">
<f:selectItems value="#{hogeItems}" />
</h:selectOneMenu>
-JNDIネームの設定は WEB-INF/components.xml にある(必須で...
--components/component/property name="jndiPattern"
-Seam Interceptorの設定は ejb-jar.xml にある(必須ではな...
--ejb-jar/interceptors/interceptor/interceptor-class
-各ページのURLの拡張子を.seamから.htmlに変えるには
--web.xmlのservlet-mappingの下のurl-patternタグで設定する
<url-mapping>*.seam</url-mapping>
↓
<url-mapping>*.html</url-mapping>
これはseamの仕様というよりJavaEEの仕様
-[[jboss-seam.jarがデプロイされない>http://d.hatena.ne.jp...
--JBossToolsで作ったearをデプロイしたら、earプロジェクト...
--色々調べたら、以下の記述を消せばいいみたいだよ。
application.xmlの
<module>
<ejb>jboss-seam.jar</ejb>
</module>
-com.sun.facelets.compiler.TagLibraryConfig loadImplicit ...
--http://www.andromda.org/jira/browse/JSF-30
--One annoying thing about using Facelets with SEAM/EJB3/...
07:38:26,843 ERROR \[STDERR\] Nov 29, 2006 7:38:26 AM
com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/C:/java/jboss-4.0.5....
/./tmp/deploy/tmp64384starter1.ear-contents/webapp-exp.w...
facelets.jar!/META-INF/jsf-ui.taglib.xml
--So, I've finally figured out what this means. Basically...
--If java.util.logging were a pet dog I'd say: Bad loggin...
--The folks at Sun should know better than to write to Sy...
--Solution #1
--Ignore the messages. They are only errors because Conso...
--Solution #2
--Use a different logging handler by using a different ja...
--Solution #3
--Experimental - Use a ContextListener to reconfigure JUL...
*対話の制御 [#p879b94b]
-あるページに対話中でないときにアクセスしたらリダイレクト...
--pages.xmlに以下のように設定
<pages>
<page view-id="hoge_url" no-conversation-view-id="/ind...
</pages>
-対話のリストは org.jboss.seam.core.ConversationList で取...
--個々の対話は org.jboss.seam.core.ConversationEntry オブ...
--(Beggining Seam p175付近)
-対話をスタートするタグ
<h:commandLink action="hoge" value="start conv">
<s:conversationPropagation type="begin">
</h:commandLink>
--typeには begin, end, join, nested, none がある
-対話のタイムアウトの設定
--WEB-INF内components.xml
<core:manager conversation-timeout="120000" />
--components.xmlはMETA-INFにもあるようだが、どういう使い...
*アノテーション [#p6a3dbae]
-@RequestParameter
--URLからパラメータを取得するときに使う。下方の「URLからG...
-Stateful Session Beanには Removeメソッドが必要
--メソッド名がRemoveでないといけないというわけではない(...
--@Statefulをつけたクラスには@Removeアノテーションをつけ...
--そのBeanを廃棄しても良い状態になったら(Seamへの通知とし...
--Seam側ではそれを目印としてBeanに割り当てた資源を回収する
-[[アノテーションの解説>http://www.jbug.jp/trans/jboss-se...
-@Observer
--@Observer("hoge") とやったメソッドはSeam組み込みコンポ...
-@DataModel, @DataModelSelection ("Beggining JBoss Seam" ...
--<h:dataTable>と一緒に使うことが多い
--java.util.Collections のListをdataTableと連動させるとき...
--SeamはListを javax.faces.model.DataModelにコンバートする
--テーブル上で選択された行が @DataModelSelectionをつけた...
-@Factory
--@Factory(Name)というアノテーションをつけたメソッドは、...
--つまりデータモデルの初期化機構=Factory Methodとして使える
--参考:http://docs.jboss.com/seam/1.2.1.GA/api/org/jboss/...
-@Role
--一つのクラスを異なるスコープで使いたいときに使える
@Name("hoge")
@Entity
@Scope(SESSION)
@Role(name="hogeEvent", scope=EVENT)
public class Hoge{
...
}
--さらにもう一つ増やしたくなったら
@Name("hoge")
@Entity
@Scope(SESSION)
@Roles({
@Role(name="hogeEvent", scope=EVENT) //ここにカンマを...
@Role(name="hogePage", scope=PAGE)
})
public class Hoge{
...
}
*認証の仕組み [#v11e84f7]
-[[Seamの認証機構>http://www.jbug.jp/trans/jboss-seam1.2....
--ELにidentity.loginなどの内臓クラスのメソッドが指定され...
--自分で作った認証メソッドとidentity.loginの対応付けはcom...
<security:identity authenticate-method="#{authenticator....
-ページのアクセス制限
--ページ単位のアクセスの設定は pages.xml で行う
<page view-id="/hoge/*">
<restrict>#{identity.loggedIn}</restrict>
</page>
--ELの評価がtrueならページが表示される(はず。未確認)
--falseなら NotLoggedInExceptionがとぶ
--ログインの他にロールも必要ならこういう感じになる
<page view-id="/hoge/*">
<restrict>#{identity.loggedIn and s:hasRole('ADMIN')...
</page>
--login-required属性という手もある
<page view-id="/hoge/*" login-required="true" />
-NotLoggedInExceptionがとんだらどうするかの設定
--pages.xmlのexceptionタグで定義する
<exception class="org.jboss.seam.security.NotLoggedInExc...
<redirect view-id="/login.xhtml">
<message>ログインしていないと閲覧できません</messa...
</redirect>
</exception>
--上記ではloginのページにリダイレクトしてメッセージを出し...
*RichFaces [#c5415640]
-RichFaces is an open source framework that adds Ajax cap...
*EL(Expression Language) [#s51df338]
-Unified EL for JSP and JSF
--http://today.java.net/pub/a/today/2006/03/07/unified-js...
-JSFのビューからの指定方法
--#{コンポーネント名.プロパティ名}
--#{コンポーネント名.メソッド名}
*Seamタグ [#h7d419cf]
-<s:validateAll>
--囲った部分のエレメントをすべてバリデートし、エラーがあ...
*examples下にあるサンプルについて [#w148ff93]
-ビルド手順などはこちら
--http://www.jbug.jp/trans/jboss-seam1.0.1GA/ja/html/tuto...
-Seamのディレクトリにあるbuild.propertiesに jboss.homeの...
正しい記述例
jboss.home = D:\\MyData\\java\\jboss-AS4.2.3.GA
これではダメです
jboss.home = D:\MyData\java\jboss-AS4.2.3.GA
-JBoss Seamのbookingというサンプルをant(ビルド→deploy)し...
2008-09-15 01:10:39,901 ERROR [org.apache.catalina.core....
[jboss.web].[localhost].[/seam-booking]] クラス
org.apache.myfaces.webapp.StartupServletContextListener の
アプリケーションリスナの設定中にエラーが発生しました
--これはJBoss ASのバージョンが4.2.3であるのに対し、使った...
---参考にしたblog記事:http://d.hatena.ne.jp/fusatsukatsuj...
--Seamの2.0.3CR1を落としてきてbooking exampleをantしたら...
*JBossの正常起動判定 [#x81abafe]
-run.shは非同期なので正常に起動されたかどうかは判定できない
-twiddle.shというスクリプトがあり、これでJMXにアクセスする
$ ./twiddle.sh -s <server> -u <user> -p <pass> query 'jb...
*URLからGETパラメータを得るには [#y9ee0752]
-エンティティ側に以下のメンバを用意
@Stateful
@AutoCreate
@Name("hogeBean")
@Scope(ScopeType.CONVERSATION)
public class HogeBean
...
/** パラメータ */
@RequestParameter("customer_id")
private String customerId;
-呼び出し側
http://svr/contentroot/hogehoge.html?customer_id=xxxxx
-pages.xmlにメソッド記述
<page view-id="hogehoge.html" action="#{hogeBean.hoge()}...
これでhoge()メソッド内でcustomer_idを参照できる模様
ページ名: