seasar

Hotswapすげー

今までTomcatのreloadable="true"を使ってたけど、コンパイルするたびにセッション状態がクリアされたり、初期化処理が再度走ったりと結構たるかったのが、Hotswapを使うと待ち時間、なんとゼロ!! reloadable="false"+Seasar hotswap。すげー。

S2StrutsのMessageManager#addMessage(String)

↓というメールをMLに投げてみたけど届かないようだ。 再送するのもメンドイのでここにさらしておこう。(負け犬 nobeansと申します。MessageManagerのaddMessage()シリーズで、MessageFacadeで宣言されているaddMessage(String)に対応するメソッドがないよう…

Page-Driven Struts 完成?

なんかとりあえず動くものができたっぽい。 セキュリティ的にはまだ穴がいっぱいなんだけど。 基本アーキテクチャは結構シンプルでいい感じ。

Page-Driven StrutsでのS2Strutsの利用

jpetstoreを改造しながらnobeans版Page-Driven Strutsの実装を探っているんですが、 ここ数日、CartPageでの注文量の更新処理でActionの実行前にNullPointerExceptionになってしまうエラーで悩んでいました。 java.lang.NullPointerException org.apache.str…

Page-Driven Struts 途中経過

OzStrutsにインスパイアされて作成中のOzJpetstore改ですが、かなり書き換わってます。 JSPの構成はほぼ一緒なのでUI的には変わらないのですが、何かしら手が入っているので実装面ではかなりの違いです。 Page-DrivenでStrutsを使うという思想は一緒なんです…

Seasar2.3リリース

おめでとうございます。 koichikさんのブログで気がついたんですが、RC2から結構変わったところがあるんですねぇ。今気になっているのはhotswap。何気に素敵です。 S2Containerインスタンス単位でhotswapに対応するかどうかを制御できるようになるともっとう…

OzStrutsとS2Struts (続き)

どうもうまい方法を見つけたみたいです。 いい感じにPojoなPageクラスに置き換わっていっています。メインの実装クラスは S2Struts用の置換コンポーネント×3 Page遷移に関するコンポーネント×3〜4 程度です。もちょっと整理できたら詳しく書いてみたいと思い…

OzStrutsとS2Struts

ここ最近、OsStrutsのサンプルのjpetstoreのS2 + S2Daoに置き換える作業をしてました。 なんとか無事に下位レイヤをS2に置き換えることができました。 時間がかかったのは、まとまった時間をとりづらい子持ち日曜プログラマの悲しさと、S2Dao/S2Unitに不慣れ…

S2UnitのExcelによる期待値表

DataSet expected = readXls("期待値.xls"); assertEquals(expected, reload(expect)); // (1)現在のDBの状態と期待値を比較 assertEquals(expected, RESULT_BEAN); // (2)取得したBeanのプロパティを期待値と比較 assertEquals(expected, RESULT_BEAN_LIST)…

S2DaoのTIPS

引き続きメモ。 Pure Interface戦略 S2Daoのための定数アノテーションなどをinterfaceに書くと、クライアントクラスから見て不要なはずの定数にアクセスできたり、ちょっと気持ち悪いところもあります。 S2Daoではなく別のO/Rマッパーを使ったり、JDBCで実装…

S2DaoのTIPS

自分用メモ。 戻り値がbooleanのメソッドの振る舞い public boolean hasRecord();のように戻り値がbooleanのメソッドは、SQLの実行結果が0ならfalse、0以外はtrueとなるようです。 SQLをcount(*)で書けばレコードが存在するかどうかのチェックを簡単に実現で…

S2Daoに任せるメソッドと実装メソッドの共存

interface HogeDao { Hoge findByFooId(String fooId); Hoge findByBarId(String barId); }のようなインタフェースに対して、findByFooId()はS2Daoに任せたいがfindByBarId()は実装を書きたいという場合、どうするのがいいんでしょうか。 class HogeDaoImpl …

Jarに対するAspectAutoRegist

って、まだ対応してないだけなんですね。 "org.seasar.struts"になんでaspectがかからないんだーって悩んじゃいました。 さっきS2.3RC2のorg.seasar.framework.container.autoregistパッケージ配下の構成を見て気づきました。 JarComponentAutoRegisterが増…

S2Strutsの処理概要

ちょっと独自ルールで実行時のActionを切り替えたり、ActionMappingを差し替えたりしたいので、仕組みを追ってみました。 Struts経験が浅いので一部言っていることが怪しいかもしれないですが、大枠はそれほど外してないと思います。 ↓ 目的 一応、以下を実…

S2.3RC1の自動登録での怪しい挙動

別のパッケージに同じ名前のクラス名があるときに、org.seasar.framework.container.autoregister.DefaultAutoNamingでコンポーネント名を自動解決すると、バッティングしてコンポーネント登録に失敗するようです。 登録時にエラーにならず、コンポーネント…

S2Struts「拡張子」の英単語スペル

struts-config.xmlで、viewExtentionという属性があります。 htmlとかjspとかの拡張子をカンマ区切りで指定する属性ですね。で、綴りです。よくあるtypoのようですが、extensionが正解らしいです。「s」。 extentionではないと。 大きな問題ではないですが、…

S2Struts1.2の無設定カスタマイズ

無設定部分カスタマイズの要のZeroConfigActionRuleとZeroConfigActionFormRule。 適当にいじりながら、id:yuki_neko_nyanさんのダイアリーも読んででお勉強。 大体見えてきました。Actionに対する各種属性を解決するクラスであるZeroConfigActionRuleが一番…

S2Struts1.2EA2突入

というわけで、S2Strutsです。 id:yuki_neko_nyanさんの[Seasarする] - 猫的怠惰Daysを参考にまずはとっかかりを、と思ってたらいきなり問題に遭遇。今のS2Struts1.2EA2実装ってSeasar4 EA1を前提に実装されているみたいで、こないだ出たS2.3RC1だとエラーが…

無念

諸事情によりJSF路線をあきらめることにしました。 大きな理由は URLでページのディレクトリ階層構造を全部そのまま正直に表示されては困る MyFacesの動作がちょっと不安 ですかね。 POJOを使った仕組みなんか結構気に入ってたんですが。 実装が熟すまで待ち…

Aspectをメソッドに適用できるように

いいかげんな改造。本体じゃなくてS2Tiger側で。 org.seasar.framework.container.annotation.Aspect @Retention(RetentionPolicy.RUNTIME) @Target( { ElementType.TYPE, ElementType.METHOD }) public @interface Aspect { String interceptor(); String p…

Seasar2.3RC1を触ってみる

コンポーネント自動登録、アスペクト一括登録すげー。楽。 クラス名の規約を守ってれば、勝手に登録できるのってホント楽。 アスペクトもいろんなかけかたを簡単に実現できるし。使ってみようとしてちょっとはまった。原因は単純なこと。自動登録を使うとき…

S2Daoの結果をS2Unitでテスト

メモ。 RELNOアノテーションのプロパティ名でgroupを指定すると… S2DaoでN:1マッピングをするとき、1側のBeansに「group_RELNO, setGroup(), getGroup()」のようにgroupプロパティを指定したら、 org.seasar.framework.exception.SQLRuntimeException: [ESSR…

JSP記法との同居

一応確認してみた。だめでした。 ちょっとした機能を追加してみたいときでもタグライブラリ作って、m:injectする必要があるみたいです。残念。 <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>という記述を <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>の前に書い…

エンティティとDTOという対比

くーす/goyaを意識しながらJSF/S2JSFをいじっていてやはり思うのが、エンティティとDTOの違いって?ということです。(ローカル)DTOというのは層またがりの場合に情報を受け渡しするために導入するものですが、くーすの文脈では、「DTO=プレゼンテーションモ…

S2Daoの「Primary keyが見つかりません」エラー

[EDAO0009]のエラーが発生する理由として、 A)DBのテーブルにpkが設定されていない場合 制約をきちんと指定すればOK。 B)PKのカラム名が間違っている (DB側 or JavaBeans側) カラム名をあわせるか、COLUMNアノテーションをかける。 C)テーブル名が間違ってい…

ユーザ情報とかの保持方法

Webアプリだとログインした後、そのユーザ情報をセッションとかに保持しておきますよね。 で、JSFを使ってちょっとサンプルをつくってるときにそれをどうやって実現しようかなー考えてたわけです。 A) 直接HttpSessionに登録して、自力でハンドリング。 B) f…

instance="session"でエラー発生

instance="session" or "request"にすると、以下のエラーが発生する。 [ERROR] 2005-10-02 19:23:03 StandardContext#loadOnStartup() サーブレット /hoge がload()例外を投げました org.seasar.framework.exception.EmptyRuntimeException: [ESSR0007]sessi…

ついにS2JSFに

ついにS2JSFに踏み込むときがやってきた。素のJSFを捨てたのはなぜか?(おおげさ 今のところ、あまり強い思いはないんだけど、とりあえずは以下のような理由。 コンポーネントをFacesContextとS2Containerで2重管理するのはいや。どっちに登録されたっけ?と…

ひがさんのBlogのまとめサイト (8) -FINAL-

くーす編の残りは特に引用するところはなし。 色々あったようですが、とりあえずgoyaとしてこの方向の設計ガイドラインが公開検討されていくようですし、それで僕は十分満足。 今日まで勉強してきたことだって、大変貴重な知識として頭の片隅に入ってるし。 …

ひがさんのBlogのまとめサイト (7)

wikiroom.com 閉鎖 を読んで勉強するシリーズ第7弾 業務ロジック設計 DIContainerのない時代には、登場人物が増えると、それを管理するコストもばかにできないものになります。徹底的に役割に応じてクラスを分割するという手法が現実的になったのは、やはりD…