2010-10-01から1ヶ月間の記事一覧

日本と欧米ではPOJOの意義に対して微妙な解釈の違いがあるような気がする

EJB2.1など、開発すべきクラスインターフェースに大きな制約のある侵略的なフレームワークに対してマーティン・ファウラーが広めた概念としてPOJO(Plain Old Java Object)という用語があることは、現在Java開発者であれば、周知のことかと思います。私は当…

プログラミングと設計は本来切り離せないものなのでは

最近はアーキテクトという役割で客先に常駐し、フレームワークの選定をしたり、事前に共通部品を設計したりする役割を担う仕事を引き受けることが結構あります。そこで運よくお客様のマネージャーがオブジェクト指向開発の経験が十分にある方だと、IDEなどの…

NullPointerExceptionはヌルポでなくナルポが正しい

Javaプログラマーをしていると時々英語の発音としては不自然な用語に出くわします。どうでもよいネタですが、以前同僚でnullはヌルではなくてナルと発音すべきと主張している人がいました。確かに辞書で調べると発音記号としてはmother(マザー)の母音と同…

Spring Tool Suite 2.5.0の正式リリース版が公開されました

http://www.springsource.com/developer/stsからSpring Tool Suite 2.5.0の正式リリース版が無料でダウンロードできるようです。同時にSpring3.0.5とSpring Rooの1.1もリリースされているようです。

AspectJ in Action

AspectJ in Action: Enterprise AOP with Spring Applications作者: Ramnivas Laddad出版社/メーカー: Manning Publications発売日: 2009/10/08メディア: ペーパーバック クリック: 6回この商品を含むブログ (2件) を見るManningのin actionシリーズはMEAP(…

リモート(別プロセス)のJBossサーバー上のキューにXAトランザクション内で正しくメッセージを送受信するには

Weblogicなど普通のサーバーだとJTAのトランザクション境界の内部で別サーバーインスタンスに対するJNDIツリーから直接XA対応の接続ファクトリーをルックアップすれば、自動的にXAのトランザクションに参加してくれます(と思います)。 JBoss MQやJBoss Mes…

JMSのConnection, Session, Consumerをキャッシュすべきかどうか

アプリケーションサーバー内からデータベースにアクセスする際にはJDBCの接続オブジェクトがプールされているということはJava EEでは常識です。したがって、アプリケーションロジックでConnectionオブジェクトを保持せず、接続を利用するたびに新規に接続を…

JSFがピンチといううわさ?!

JSF2.0の仕様を決めているJSR-314のエキスパートグループが、後続のグループを設立することなくいきなり解散してしまったということで、JSFがオラクルによってつぶされるのではないかとか、さまざまな憶測が広がっているようです。 http://in.relation.to/Bl…

軽量Javaフレームワークを世の中に広めた名著

Expert One-on-One J2EE Development without EJB作者: Rod Johnson,Juergen Hoeller出版社/メーカー: Wrox発売日: 2004/06/18メディア: ペーパーバック購入: 1人 クリック: 8回この商品を含むブログ (24件) を見るこの本を読んだのは5年以上前のことですが…

侵略的なフレームワーク

SpringやSeasar2などの軽量なフレームワークが登場し、POJO、DI、AOPという考え方が今ではすっかり浸透してきているのかと思いきや、ぜんぜんそんなことはないみたいです。客先でも(主に社内での)実績最優先という考え方から、最近のOSSフレームワークには…

予算の関係でプロジェクトが立ち上がらない

もともと50個程もある多数のMS AccessベースのC/Sシステムを、徐々にJava EEベースのWebシステムに作り変えるという前提でフレームワークやミドルウェアの選定をサポートする役割で参加しているプロジェクトがあるのですが、予算の承認が下りずになかなかプ…

JBoss Tools Beta1がリリースされています

Eclipse 3.6(Helios)に対応したJboss ToolsがM2からBeta1にバージョンアップされています。 http://download.jboss.org/jbosstools/updates/development/ 簡単に確認したところ、以前のバージョンで気づいた以下のバグはすべて修正されているようです。 テー…

インドと日本におけるプログラマーの社会的地位の違い

会社でアジャイル開発を使ったオフショアの会社を経営しているインド人の方の話を聞く機会がありました。私はこうした事情に疎かったので、今までオフショア開発は大規模なウォーターフォール型の開発で、手だけ動かす単価の安いプログラマーを大量に安く雇…

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

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

JPA2仕様の標準的な参考書

Pro JPA 2: Mastering the Java™ Persistence API (Expert's Voice in Java Technology)作者: Mike Keith,Merrick Schincariol,Jeremy Keith出版社/メーカー: Apress発売日: 2009/11/25メディア: ペーパーバック クリック: 11回この商品を含むブログ (1件) …

Seam vs Spring

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

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

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

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

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

RichFacesの部品に対してタグのevent属性として適切な値について

Ajax4jsfのタグを利用すると、通常のJSFの入力フィールドを簡単にAjax化できます。たとえば以下のようにして <h:inputText value="#{user.emailAddress}" > <a:support event="onblur" ajaxSingle="true" reRender="errorMessage"/> </h:inputText> 入力フィールドのフォーカスが外れた時点でAjaxでPOSTリクエストを送信し、バリデーションをかけることが可能です。 おなじ要領でやの入力をAja…

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

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

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

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

Struts2を好きになれない点

Struts1に代わる次世代のWeb MVCフレームワークとしてStruts2に対する期待が大きいようです。この傾向はあまりプログラミングをしない層の方で特に強いようですが、プログラマーの中でも勉強されている方も多いようです。Struts1に対する移行先としてJSFとSt…

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…

Spring MVCの設定でContextLoaderListenerを使う必要があるケース

従来のSpring開発者の常識では、web.xmlにて ContextLoaderListenerを設定してWebアプリケーションで共通のコンテキストを読み込む DispatcherServletを設定して、サーブレットごとのコンテキストを読み込む というように2階層のアプリケーションコンテキス…

CDIにきちんと対応したJSF2.0の参考書

Core JavaServer Faces (Core Series)作者: David Horstmann, Cay S. Geary出版社/メーカー: Prentice Hall発売日: 2010/05/27メディア: ペーパーバック クリック: 14回この商品を含むブログ (2件) を見るJSF2.0の勉強用に購入した本です。第三版と改訂を重…

大混乱に陥っているJavaEE 6のアノテーションに関する使い分けについて

JavaEE 6標準は、従来のJavaEE 5に対してさらなるEoDと軽量化を目指しているということだったのですが、いざ使おうと思うと、名前が同じアノテーションが複数のパッケージに定義されていたり、意味的にほとんど違いがないようなアノテーションが存在していた…

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

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