[Seasar-user:5536] Re: S2Struts でActionを多重継承+HOT DEPLOYした場合に、 AbstractMethodError
Katsuhiko Nagashima
[E-MAIL ADDRESS DELETED]
2006年 12月 20日 (水) 00:46:31 JST
永島です。
> Seasar2.4+S2Strutsの現在のおすすめは?
POJOのActionを利用する場合、
ExampleのEmployeeのように1画面1Actionとして
MethodBindingによる実行が良いと思ってます。
Actionのインターフェースにつきましては、
Seasar2.4でActionにはインターフェースを使わないことを勧めていますし
POJO Actionを利用するとクラス数が増えるとの指摘もあったため
S2Strutsでも1.3からPOJO Actionでもインターフェースがなくても動作するようにしました。
ですが、無設定を利用する場合、
struts-configの内容をどこかに追い出す必要があり、
管理しやすくするためにインターフェースに追い出すのも良い方法だと思ってます。
利用しやすいほうを使うのが良いと思います。
複数のActionインターフェースを1つActionで実装することについてですが、
現状のS2StrutsでのHOT deployは、1Actionインターフェースを1つのActionで実装するのが
前提となっているため、Actionのアノテーションを変更しても反映されない問題が発生します。
1Actionインターフェースを1つのActionでの実装とMethodBindingの組み合わせを
検討していただけないでしょうか。m(_ _)m
> Actionに対してURLが一意に決まってしまうと、ちょっと融通がきかないので、インターフェースに
> Struts-configを追い出すのも考え物かなぁと多少思っています。
>
> 例えばPCサイトを作って、そのAction等をそのまま使って携帯サイトを作ろうとしたときに、
> 機能が同じでもURLが違うと別に作らないといけなくなってしまいます。
確かにそうですね。
私自身、複数の端末に対して1つのWebアプリを提供したことがないので
実際に試した結果ではないのですが、、、
そのような場合はWildcard Mappingsや
Struts1.3から導入されたextends(使ったことはなくソースを見ただけですが。。。)を利用し
struts-configを書いてPOJO Actionや通常のAction(Actionクラスを継承したAction)を
設定したほうがよいかもしれません。
また、ちょっとややこしくなりそうですが、PCサイトは無設定で提供し
携帯サイトをstruts-configで提供するということも可能です。
ただ、表示する内容やFormの項目などが異なる(項目数が少ないとか)のであれば、
Actionを別々につくりLogicクラスやServiceクラスで
共通化を図るほうがよい気もします。
以上です。
06/12/18 に 原田<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 原田です。
>
> > > デバッガで見ると、そういう感じで動いているようでした。
> > > 試しに多重実装したImplを継承した空のXxxPostActionImplを作成すると正常に動作しました。
> > >
> > XxxActionでXxxPostActionをextendsすると良いのでは、
> > ないでしょうか。
>
> それだとXxxActionのメソッドが2つになってしまうので、NGのようです。
>
> > > 試しに多重実装したImplを継承した空のXxxPostActionImplを作成すると正常に動作しました。
>
> の方法も、HOT DEPLOY時は大丈夫でしたが、起動時にNGになってしまいました。
>
> >
> > ただ、Seasar2.4では、Actionにはインターフェースを使わないことを
> > お勧めしています。
> > Actionは他から利用されるものではなく、ユースケースで
> > 閉じているものだからです。
> >
> > Post系のメソッド名は、doXxxにすると言う規約にしておけば、
> > AOPもpointcutで簡単に指定できます。
>
> Actionに対してURLが一意に決まってしまうと、ちょっと融通がきかないので、インターフェースに
> Struts-configを追い出すのも考え物かなぁと多少思っています。
>
> 例えばPCサイトを作って、そのAction等をそのまま使って携帯サイトを作ろうとしたときに、
> 機能が同じでもURLが違うと別に作らないといけなくなってしまいます。
>
>
> Seasar2.4+S2Strutsの現在のおすすめは?
>
> 以上よろしくお願いします。
>
>
> Yasuo Higa <[E-MAIL ADDRESS DELETED]> wrote:
>
> > ひがです。
> >
> > > 原田です。
> > >
> > > この件、その後調べてみたのですが、以下のようなことだと思います。
> > >
> > > ・HOT DEPLOYするにはActionの設定は全自動。
> > > ・XxxAction,XxxPostActionの実装は、全自動ではそれぞれXxxActionImpl、XxxPostActionImplで無ければならない。
> > > ・1つのImplで多重継承した場合、XxxPostActionImplが無いので、エラーになる。
> > >
> > > デバッガで見ると、そういう感じで動いているようでした。
> > > 試しに多重実装したImplを継承した空のXxxPostActionImplを作成すると正常に動作しました。
> > >
> > XxxActionでXxxPostActionをextendsすると良いのでは、
> > ないでしょうか。
> >
> > ただ、Seasar2.4では、Actionにはインターフェースを使わないことを
> > お勧めしています。
> > Actionは他から利用されるものではなく、ユースケースで
> > 閉じているものだからです。
> >
> > Post系のメソッド名は、doXxxにすると言う規約にしておけば、
> > AOPもpointcutで簡単に指定できます。
> >
> > Yasuo Higa
> > The Seasar Project
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
--
Katsuhiko Nagashima
Seasar-user メーリングリストの案内