Seasar2チュートリアル(1)

S2Containerリファレンス読むのもいいけど、少しは手を動かそう!ということでチュートリアルが無いかぐぐってみる。で、ヒットしたのがこれ→http://www.wikiroom.com/Seasar/?Seasar%20V2

別な人がやっているblog上のチュートリアルの目次みたいなもの。

やっていくといろいろエラーが出るのでdebugしながら進めたのでそのメモ。

List03-4 car.xml

  • DOCTYPEが無いためエラーになるので、下のように追加。
  • 拡張子は dicon の方が今風か?
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components>
    <component class="...."/>
</components>

list06-2. Car.xml

'red'より"red"の方が適切?と思ったらOGNLではなくSel(Seasar expression language)?何それ?もしかしてこのチュートリアルの前提Versionがかなり古かったりして。

list10-2. ABS.java

は、今のSeasar(2.2.7)にはない。多分AbstractInterceptorを使って下みたいにするのが今風かな?xmlの方は直さなくて大丈夫。

package ...;
import org.aopalliance.intercept.MethodInvocation;
import org.seasar.framework.aop.interceptors.AbstractInterceptor;

public class ABS extends AbstractInterceptor {
    public Object invoke(MethodInvocation invocation) throws Throwable {
        System.out.println("Ooops, danger!");
        Object ret = invocation.proceed();
        System.out.println("Kikikiki...");
        return ret;
    }
}

list13-2. car.xml

out.print()ではエラーになる。ONGLでは(?)#を付加して#out.print()とする。

list14-4. Dealer.java

Jointpoint#getArgs()がダメなので書き換える。

package ...;
import org.aopalliance.intercept.MethodInvocation;
import org.seasar.framework.aop.interceptors.AbstractInterceptor;

public class Dealer extends AbstractInterceptor {
    public Object invoke(MethodInvocation invocation) throws Throwable {
        Object[] args = invocation.getArguments();
               :
}

続きは明日。