EJB3Trailをやってみた。
http://www.jbug.jp/cgi-bin/fswiki/wiki.cgi?page=EJB3TrailBlazer%C6%FC%CB%DC%B8%EC%C8%C7
和訳していただいたJBUGの皆様、すばらしいものをありがとう。
EJB3.0の基本を知るには十分すぎます。
JBOSS のEJB3.0はまだドキュメントが出揃っていないのがつらい中、大変貴重な資料です。
で、やってみたのですが、案の定きれいには動いてくれません。
以下のサイトのとおりに直してみましたが、やっぱり動きません。
http://d.hatena.ne.jp/osugif/20060603
仕方が無いので、色々と調査して以下のようにソースコードを修正してみた。
{TrailBlazer_HOME}/EJB3/src/trail/interceptor/Tracer.java
package trail.interceptor;
import javax.interceptor.*;
public class Tracer {
@AroundInvoke
public Object log (InvocationContext ctx)
throws Exception {
InterceptorCalculator cal = (InterceptorCalculator) ctx.getTarget(); //<-getBean()からgetTarget()に修正
String className = ctx.getTarget().getClass().getName(); //<-getBean()からgetTarget()に修正
String methodName = ctx.getMethod().getName();
String target = className + "." + methodName + "()";
long start = System.currentTimeMillis();
System.out.println ("Invoking " + target);
cal.setTrace(cal.getTrace() + "<br/>" +
"Invoking " + target);
try {
return ctx.proceed();
} catch(Exception e) {
throw e;
} finally {
System.out.println("Exiting " + target);
cal.setTrace(cal.getTrace() + "<br/>" +
"Exiting " + target);
long time = System.currentTimeMillis() - start;
System.out.println("This method takes " +
time + "ms to execute");
cal.setTrace(cal.getTrace() + "<br/>" +
"This method takes " +
time + "ms to execute");
}
}
}
無事コンパイルが通り、実行できました。
その後、別のPCで同じように試してみたところ、↑の様な修正はなしで動きました。
落としたアーカイブが違ったのかな?それとも余計なjarを使ってたかな?
まぁできたのでよしとしましょう。
今の所日本語でEJB3.0(JBOSS版)の解説をしている書籍は以下のものしかないようなので、これから購入して読み耽ります。
- 山田 和夫
- 標準EJB 3.0プログラミング
さらに、JBOSSでEJBならやっぱり話題?のJBOSS Seamsでしょ?と言うことでこちらも試してみました。
すごいですね~。まだちょっとしか試していませんが、Struts-Facesなどのような後付コンポーネントとは違い、
かなりきれいに作れます。
こちらは↑のEJB以上に日本語ドキュメントがありませんが、がんばって実験してみます。
Seams関係で紙になってるものって今月のJavaWorldぐらい?