新春ですから

MacBook Air 11インチ欲しい!存在をすっかり忘れて放置いたけれども、今年は Java 回帰の年ということで更新機会が来たりするのだろうか。

SQLファイル内のOGNL式でクラスフィールドの参照ができない。

SQLファイル内のOGNL式でクラスフィールドの参照ができない。 初期のS2Daoではバインド変数コメントで、OGNLが使えましたが、 nullの時にバインド変数の方が決められないという問題が出たため、 "."によるプロパティアクセスしか認めないようになっています…

SAStruts を改造した理由

SAStruts は非常によくできたフレームワークだと思います。そのまま使うことで十分なメリットを得られる。それでも、例外的な要件や、社内独特のルールみたいなのも良くある話で、それをフレームワークに求めるのは酷だ。そこは今までどおり、みんなで Strut…

SAStruts 1.0.4-sp2 リリース

SAStrutsがファイナルリリースとのこと。お疲れさまでした。 SAStruts 1.0.4-sp2をリリースしました。リリースノートはこちら。 http://sastruts.seasar.org/releaseNotes.htmlダウンロードはこちら。 http://sastruts.seasar.org/download.htmlこのバージョ…

不定貫商品のEC

不定貫商品の通販ってどうするんだろうと思ったら、結構あたりまえに行われていたのでビックリした。ハモンセラーノ(生ハムの通販)「不定貫」というのは、1製品あたりの重量が決まっていないもので、スーパーの精肉コーナーで、豚バラブロックの全パックで…

validwhenでハマる

ハマると言うほどのことでも無かったのだけど、2つ値が一致しているかどうかというvalidwhenを書いたが、これが思ったように動かない。 <field property="foo" depends="validwhen"> <arg0 key="labels.foo" resource="true" /> <var> <var-name>test</var-name> <var-value>(bar != *this*)</var-value> </var> </field> 思ったように動かないというより、真逆の動きになる。よくよく考えてみれば、validwhen だか…

LinkageError の原因判明

HotDeploy 対象でない Util クラスにて、HotDeploy 対象の Dto を引数で受けるような作りになっていたのが原因だった模様。 public class SampleUtil { public static String getName(SampleDto sampleDto) { という、やり方がマズかった。引数の型にとるだ…

SAStruts の LinkageError で足踏み

SAStruts でテストケースを用意してユニットテストを頑張っていたら、なぜか触っていないはずのアプリケーションにて、java.lang.LinkageError が発生して動かなくなってしまった。初めて見た、このエラー。 java.lang.LinkageError: loader constraint viol…

COOL deploy 爆速伝説

ということで、COOL deploy で動かせるようになって、ビックリ驚いた!すんごい速いッス!HOT で製造しているときに、「この性能ではちょっとマズイかもなあ…」と思って、やたらDBや計算ロジックでのチューニングを考えていたのだけど、何のことはない、HOT …

COOL deploy にしたら動かなくなった…

ローカルで HOT でサクサク開発してきて、いざ COOL にしてサーバにのっけたら、一部で動かないところがあった。ActionFormWrapper が reset メソッドを呼ぼうとして、 NullPointerException になっているっぽい。うーむ。起動時のログを見ていくと、ActionF…

[java][seasar] JdbcManager に Interceptor を織り込む

SAStruts で JdbcManager に Interceptor を織り込もうと画策。まず、app.dicon にて <component name="jdbcManager" class="org.seasar.extension.jdbc.JdbcManager"> <aspect pointcut="toString"> <component class="org.seasar.framework.aop.interceptors.TraceInterceptor" /> </aspect> </component> そして、試しにこんなコードを。 public JdbcMana…

[java][seasar] BeanWrapper の bean が欲しい

SAStruts の良いところのひとつは、アクセッサメソッドを用意していない Bean であっても、Map 実装の BeanWrapper にくるんで、そうとは意識せずに値のやりとりができるところだと思う。が、独自の Validation 処理で、ちょいと込み入った要件があって、Bea…

[java][seasar] Hot Deploy は便利なんです

メンバーに「Hot Deploy は便利だよねー」と言ったら、「今までと変わらなくないですかぁ?」と返されて焦る。Hot Deploy のおかげで、かなり開発効率が上がっていると思っていただけに、ショック。しかし、よくよく話を聞いて開発環境を触ってみると、ソー…

[java][seasar] BeanWrapper

例によって SAStruts の話題ですけれども。pageContext.findAttribute() したら、BeanWrapper が返ってきた。こ、これは!ActionWrapper さんが、POJO Action のプロパティを色んなラッパーで包んでから HttpServletRequest に詰めてあげているのか。Wrapper…

[java][seasar] EL で Session の属性値にアクセス

SAStruts のアクションフォームのチュートリアルを使って実験。JSP にて Session に格納したオブジェクトの値を、EL式 を使って表示できるかどうか。 @Component(instance = InstanceType.SESSION) public class FormDto implements Serializable { private …

[java][seasar] いや、待てよ…

カスタムタグのなかでコンポーネントを使うような作りって、設計的にどうなんだろう。logicを呼び出すような方法の方が、しっくり来るのかな?ま、明日だ、明日。

[java][seasar] カスタムタグでDIできるかな

Seasarの世界に飛び込んで10日。初めて触れたDIとAOPの文化に、ようやく馴染んできた感じ。ここまでのところ、悪戦苦闘しながらも、やりたいことは一応それっぽく実現できている。これも一重にサポート体制というか、id:higayasuoさんだったり、id:koichikさ…

[java][seasar] インターセプターさんは同じ人か…

どうやらInterceptorする人は、コンテナの初期化時にインスタンス化されたものを使いまわすようだ。そうかあ。

[java][seasar] S2AOPを触ってはみたものの

恥ずかしながら本格的にAOPプログラムをするのは、今回が初めて。ということで、S2AOPを試そうにも、「ポイントカットってどういう意味?」とか、「インタータイプとは何ぞや?」というところでつまづいて、なかなかスムーズに体得できていない。まあ、触り…

次の一手

明日こそ、SAStrutsでAOPを色々と試してみよう。セッションやらログやらパラメータ処理やら、共通でインターセプトしたいことがたくさんある。ワクワク。

S2JDBCのSQLをどうやって管理したものか

SAStrutsの公式リファレンスには、次のようにある。 データアクセスのロジックは、アクションに記述します。データアクセスのロジックをDaoクラスに抽出する方法もありますが、 S2JDBCを使うと、ほとんどのデータアクセスロジックは、JdbcManagerを呼び出し…

S2JDBCを触ってみた

Seasar事始めということで、「流れるようなインタフェース」という触れ込みのS2JDBCを体験。これは直感的で気持ちが良い。JPQLよりも、とっつきやすいと思われる。ただ、Sequenceを取得するであったり、集約関数の利用だったりというのは、頻繁に使うところ…

Teeda それとも SAStruts

Seasar2の採用を決断して、最初に立ちはだかった壁は、「Teeda それとも SAStruts」という選択肢だった。コメントでの、ひがさんからの次のアドバイスが、きっかけ。 SAStruts(http://sastruts.seasar.org/)あるいは Teeda(http://teeda.seasar.org/ja/index…

Seasar2を採用してみようかと

ひさしぶりに、Javaでプロジェクトをやることになったので、ここぞとばかりにメンバーに「Seasar2を使おうよっ!」と提言。なんて書くとカワイイけど、実際のところ自分がプロジェクトの仕切り担当なわけで、Javaと決めたのも、フレームワークにSeasar2を使…

Eclipse3.3がおもしろそう

Eclipseは、いまだに3.2を使い続けている。理由はシンプルで、またお気に入りのプラグインをそろえて、エディタの設定をして、プロジェクトをチェックアウトしてきて。そうやって環境を作り直すのが面倒だったからだ。All-in-Oneだからダウンロードしてきて…

誕生日の前日に1歳年をとる

法律では誕生日の前日に1歳年をとる!? 年齢の数え方は「年齢計算に関する法律」で民法143条を適用するということになっていて、簡単に言ってしまうと法律的には誕生日の前日午後12時に1歳年齢が加算されるということなのだ。 なんで4月1日が早生まれなんだろ…

はてなダイアリーにて。

最近は担うべき役割も変わりつつあって、押さえるべきノウハウや理論ってのも、技術系に限らなくなってきた気がする。ということで、技術系ノウハウは本家で続けるとして、それ以外のトピックスは、はてなダイアリーにしてみようかと。まあ、ゆるい感じで、…