Seam

Seamの画面定義xmlファイルを作成する単位

画面遷移定義におけるJSFとSeamの思想の違いについて - 達人プログラマーを目指してで説明したように、Seamでは画面ごとに画面遷移やパラメーター、アクションなどのメタ情報を定義することができます。これを定義する場所としては グローバルなpages.xmlフ…

SeamアプリでGETリクエストとPOSTリクエストとの適切な使い分けに関する注意点

画面遷移定義におけるJSFとSeamの思想の違いについてで述べた様に、Seamでは標準のJSF1.2と比較してGETリクエストのサポートが充実しています。つまり、JSFではGETで単純に画面を開くことしかできないのに対して、Seamの場合、タグを使うことで、アクション…

Seam vs Spring

私自身仕事でSeamを使って開発をした経験はないのですが、今回技術調査をして簡単なアプリケーションを作ってみた感想としては、「考え方に慣れるとかなり便利であり、適合する案件ならば是非積極的に使ってみたい」というよい印象を持ちました。Seamは一般…

Seamとプログラマーのスキル?

今日、会社の上司から「Seamの上にラッパーとなるフレームワークをかぶせて形式化することで、大部分Javaの初心者からなるチームでも使えるようにできますか?」というような趣旨の質問をされていまいました。私の会社のようなSIerといわれるような会社では…

Seamの会話の開始、終了の指定方法とEntityManagerのflushモードについての注意点

Seamの場合、EntityManagerをSeam管理にして会話スコープと同期させることで、JPAの永続コンテキストをアプリケーショントランザクションの間持続させることが容易に可能です。たとえば、データ更新ウィザード画面を開始してから、最終画面の更新ボタンをを…

Hibernateのlazy関連用Proxyについての注意点

JPAの仕様では@ManyToOneなど関連先が1個になる関連はデフォルトでeager関連となります。特に、JPAのプロバイダーとしてHibernateを利用する場合、eager関連はデフォルトでOUTER JOINされてしまうため、多くの関連を定義すると一気に大量のJOINが行われてし…

Seam(JSF)アプリでセルを直接編集可能なテーブルを作成する方法?

MS Accessなどのアプリケーションでは、グリッドで直接値を編集するということが簡単に実現できるのですが、Seamアプリで同じような事がはたして簡単に実現できるのでしょうか?データ中心のレガシーなC/SアプリをJSFを使ってWeb化する際には、実際に要件と…

Seamのページパラメーターは奥が深い

会話スコープによるサーバー側での状態保持やバイジェクションなどの機能と比較して、地味目な機能のため、初心者にはあまりよく理解されていない傾向があるようですが、Seamのページパラメーター機能は実に奥が深くて、便利な機能だと思います。宣言の仕方…

やでpropagation="default"を指定した場合の意味

ドキュメントを見てもやのpropagation属性に指定可能な値には「default」という値が何を意味するの書かれていないのに、自動生成したコードでは以下のように、 <s:link view="/#{empty from ? 'Course' : from}.xhtml" value="#{empty from ? 'View' : 'Select'}" propagation="#{empty from ? 'none' : 'default'}" id="courseViewId"> <f:param name="courseId" value="#{_course.id}"/> </f:param></s:link>

Seam Application Frameworkを使ったデータアクセスについて

名前が紛らわしいのですが、Seamの中にCRUD処理を簡易化するためのフレームワークが存在しており、Seam Application Frameworkと呼ばれています。seam-genやJBoss Toolsで自動生成したときに使われるXXListやXXHomeといったクラスが継承しているフレームワー…

SeamでHttpServletRequestにアクセスする方法

SeamアプリケーションでHttpServletRequestなどのサーブレットAPIのオブジェクトにどうやってアクセスするか、知らないとどうやってやるべきかすぐにわからないのですが、FAQとして以下にやり方が書いてあったので、メモしておきます。 http://seamframework…

JBoss ToolsでまともにSeamの開発をできるようにするまでの手順のまとめ

ここ1ヶ月ほどで、JBoss Toolsを使ったSeamの開発環境を構築する上でいろいろ行った対応について、手順を以下にまとめておきます。JBoss ASのバージョンは5.1.0.GAを前提とします。 JBoss Toolsのインストール 現時点では、(Eclipse 3.6ベースのプラグイン…

コボラーに一日でSeamを理解してもらう

以前、VB6しかやったことのない人に2週間でSeamをマスターさせる!?という記事を書いたのですが、本日担当していた講師の仕事が無事終わりました。 実態としてはもともとの想定をこえる講師としてかなり困難な仕事でした。受講生の人数は3人と少なかったのは…

エンティティクラスのequalsメソッドとhashCodeメソッドを定義しなくてはならない場合

Seamの便利な機能の一つにタグを使って変換を行い、エンティティのリストを使って直接画面の選択項目を描画させる機能があります。たとえば、アクションクラスのどこかで @SuppressWarnings("unchecked") @Factory(scope = ScopeType.APPLICATION) public Li…

JBoss Tools 3.1.1ではメソッド名の変更リファクタリングができない

以前からなんとなく気になっていたのですが、やはりJBossTools上でメソッド名を変更するリファクタリングを実行しようとしても、内部エラーなって変更できません。以下の例外が発生してしまい、名称変更がロールバックされてしまいます。 eclipse.buildId=un…

小さめのサンプルを中心としたSeamの解説書

Seam Framework: Experience the Evolution of Java EE (JBoss Series)作者: Michael Juntao Orshalick, Jacob Heute, Thomas Yuan出版社/メーカー: Prentice Hall発売日: 2009/02/04メディア: ペーパーバック クリック: 5回この商品を含むブログ (2件) を見…

JBoss Tools 3.2.0MではDDLからエンティティのリバース生成ができない

Eclipse 3.6 + JBoss Tools 3.2.0M2を試してみましたでJBoss Tools 3.2.0Mが調子がよいということを書いたのですが、DDLからエンティティのリバース生成ができないという致命的なバグがあることがわかりました。以下の例外となっていまいます。 Seam エンテ…

JBoss AS 4.2.3でfacelets関連のloadImplicit ERRORログが出力される問題に対する対処方法

http://seamframework.org/85172.laceなど多くのサイトでfaceletsで多数のloadImplicitというERRORログが出力される問題が報告されていますが、結局JDKのloggerとlog4jとの連携がうまくいっていないことが原因のようです。JBoss AS 4.2.3やtomcat上で発生す…

JavaOne 2010でのSeam関連のセッション

以下に、Seam in Action: Covers Seam 2の著者であるDan Allen氏のJavaOne 2010における講演資料がありました。 http://www.slideshare.net/mojavelinux/jsr299-cdi-weld-the-future-of-seam-javaone-2010 特に新しい情報は無いようですが、CDIとWeldに対す…

VB6しかやったことのない人に2週間でSeamをマスターさせる!?

それなりにプログラミングの経験はあるのかもしれませんが、Visual Basic(.NETではない)しか書いたことのないプログラマーに、3日でJavaを教えた後、Seamを使ったWeb開発を実習してもらうという非常に難しい仕事を引き受けることになってしまいました。VB6…

HTTP Proxyサーバー経由でのインターネットアクセスしかできない環境でSeamTest(TestNG)が実行できない場合の対策

会社の環境などインターネットに直接接続できず、HTTP Proxyサーバー経由でのアクセスしかできない環境ではSeamTestの実行時に勝手にDTDを検索に行ってしまい、「UnknownHostException: www.jboss.org」で例外となってしまうようです。 とりあえずの対処とし…

JBoss ASの起動時間を短縮する方法

ホットデプロイが完全でないことやメモリーリークの問題(Seamアプリの再デプロイを繰り返すと遅かれ早かれOutOfMemoryErrorが発生する)があることなどから、JBoss AS5.1.0のdefault構成で起動すると、あまりにも起動時間が長いことが開発生産性を低下させ…

@DataModel/@DataModelSelectionを使った一覧選択機能の実装はアンチパターンか?

Seamのステートフルなアーキテクチャーを活かした例として、入門書などにはよく@DataModelと@DataModelSelectionを組み合わせて一覧からエンティティを選択するような例が書かれています。たとえば、Seamのディストリビューションのexamples\messagesという…

画面遷移定義におけるJSFとSeamの思想の違いについて

以前にSeamのバイジェクションと一般的なDIの違いにて記述したバイジェクションと並んでSeam固有の機能として、pages.xmlを使ったページ指向の画面遷移定義があると思います。一見すると普通の(冗長で悪名高き)JSFのfaces-config.xmlをちょっと簡潔にした…

Seamのページパラメーターに日本語を使うと文字化けする場合の対処方法

Seamの便利な機能のひとつとして、ページパラメーターという機能があります。pages.xmlでページパラメーターを指定しておくと、その画面に遷移するときに渡されたHTTPリクエストパラメーターを自動的に処理してBeanにバインドしてくれたり、逆にパラメーター…

JBoss Seamの入門書

オープンソース徹底活用JBossSeamによるWebアプリケーション開発作者: 並河英二,新宅聡子,林大介,宍戸修,近藤健,和田広之出版社/メーカー: 秀和システム発売日: 2009/07/23メディア: 単行本購入: 1人 クリック: 27回この商品を含むブログ (8件) を見るJBoss …

JBoss Tools3.1.1で生成した状態でJBoss AS 5.1でJPAを使えるようにするための追加手順

JBoss ToolsのSeam Webプロジェクトを新規に作成した状態のままではJBoss AS 5以降でJPAが正しく実行できません。これも知らないと結構はまってしまうところですね。Hello Worldの実行は成功したけれど、JPAでDBアクセスができないという場合は、以下のポイ…

Sean in Action

Seam in Action: Covers Seam 2作者: Dan Allen出版社/メーカー: Manning Publications発売日: 2008/09/12メディア: ペーパーバック クリック: 8回この商品を含むブログ (7件) を見る結構時間がかかりましたが、Seam in Actionをほぼ読み終わりました。他のS…

JBoss Tools +JBoss AS5.1.0でSeamアプリのホットデプロイを可能にするための方法

JBoss Tools3.1で生成したSeamのWebアプリケーションですが、デフォルトの構成ではJBoss AS5.1.0に対してアクションクラスなどhotフォルダー配下のクラスのインクリメンタルな置換が利きません。(JBoss AS4.2なら大丈夫。)アクションクラスなどを少しでも…

JBoss Toolsでfaceletsのxhtmlエディタの文字エンコード設定?

以下のブログでも記述されているとおり、 http://d.hatena.ne.jp/penguins/20100303/p3 JBossTools3.1(eclipse3.5.2)でもxhtmlファイルでエディタが自動認識するエンコーディングに問題があるようです。 テンプレートのルートとなるファイル(template.xht…