[cubby-user:227] Re: Actionクラスの差し替え方法があればご教授いただけないでしょうか?

はっしぃ [E-MAIL ADDRESS DELETED]
2013年 3月 13日 (水) 12:49:50 JST


馬場様

前回アドバイスいただきました、NamingConventionImplを拡張しての対応で
期待するカスタマイズができました。
(具体的には、#addIgonreActionClassNameというメソッドを追加しました)
どうもありがとうございました。

ここ数年、Railsの勢いがすごいですが、CubbyでもRailsに負けないくらいのサーバーサイドの
生産性は出せるとおもいます。むしろ、Cubbyの方が自由が効くため扱いやすいくらいです。

このような素晴らしいフレームワークを開発していただき、本当に助かっております。
今後とも宜しくお願い致します。




2013年3月5日 16:29 はっしぃ <hasuie @ gmail.com>:

> 馬場様
>
> 早々のご返信ありがとうございます。
>
> アクションクラスの作成は、インタフェースを使用しない方式で作成しており
> 以下のような記述を試しておりました。
>
> ■標準版
>     <initMethod name="addInterfaceToImplementationClassName">
>       <arg>"xxx.smart.web.aaa.HogeAction"</arg>
>       <arg>"xxx.smart.web.aaa.HogeAction"</arg>
>     </initMethod>
>
> ■カスタマイズ版
>     <initMethod name="addInterfaceToImplementationClassName">
>       <arg>"xxx.smart.web.aaa.HogeAction"</arg>
>       <arg>"xxx.Z001.web.aaa.Z001HogeAction"</arg>
>     </initMethod>
>
> ■Java側
> @Path("hoge")
> public class HogeAction extends BaseWebAction {
>     public ActionResult index() {
>         // 標準版の処理
>         return new JspForward("/hoge/index.jsp");
>     }
> }
>
> @Path("hoge")
> public class Z001HogeAction extends BaseWebAction {
>     public ActionResult index() {
>         // カスタマイズ版の処理
>         return new JspForward("/hoge/index_Z001.jsp");
>     }
> }
>
> 現状では、Mavenではなく env.txt での切り替えで対応しておりますので
> アドバイスいただきました、NamingConventionImplを拡張しての対応を検討したいと
> 思います。
>
> 動作確認が取れましたら、後日お知らせします。
> どうもありがとうございました。
>
>
>
> 2013年3月5日 15:32 Yasuyuki BABA <yasuyuki.baba @ gmail.com>:
>
> 馬場です。
>>
>> アクションクラスはどのように作成されているのでしょう?
>> NamingConventionImpl#addInterfaceToImplementationClassName
>> を使おうとしているところから想像すると、インターフェースにアノテーションを付与し、カスタマイズ箇所はその実装クラスに実装する、ということでしょうか?
>> Cubbyではインターフェースのアノテーションは読み取らなかったと思うので、それではうまく登録できないかとおもいます。
>> # すみません、ちょっとうろ覚えです。
>> NamingConventionImpl を拡張して isIgnoreClassName の中で
>> xxx.smart.web.aaa.HogeAction(標準画面用)を smart deploy
>> の対象外にする、というやり方だとうまく動くのではないでしょうか?
>>
>> 個人的には、同じクラス名にして Maven の Profile 機能でビルド時に切り替えるのが簡単かなーと思います。
>>
>>
>> 2013年3月5日 14:30 はっしぃ <hasuie @ gmail.com>:
>> > お世話になります。はっしぃと申します。
>> >
>> > Cubbyを利用したクラウドサービスを開発しており、顧客により画面カスタマイズが
>> > 発生した際の対応方法を調査しております。
>> >
>> > 目的としては、ソース管理としては、1プロジェクトで管理しつつ
>> > 画面のUIが大幅に変更になる場合には、個別カスタマイズで対応する方針です。
>> >
>> > そこで、環境によりActionクラスを差し替えたく、convention.diconの
>> > NamingConventionImpl#addInterfaceToImplementationClassName にて
>> > 設定を行いました。
>> > 設定することで、複数コンポーネント登録の旨のエラーは発生しなくなりましたが
>> >
>> > 以下のようなエラーが発生して画面が表示できませんでした。
>> >
>> > java.lang.NullPointerException
>> > at
>> >
>> org.seasar.cubby.internal.controller.impl.ActionProcessorImpl.process(ActionProcessorImpl.java:83)
>> > at
>> >
>> org.seasar.cubby.filter.CubbyFilter$RequestProcessingInvocationImpl.proceed(CubbyFilter.java:483)
>> > at
>> >
>> org.seasar.cubby.filter.CubbyFilter$RequestProcessingInvocationImpl.proceed(CubbyFilter.java:424)
>> > at
>> >
>> org.seasar.cubby.plugin.AbstractPlugin.invokeRequestProcessing(AbstractPlugin.java:106)
>> >
>> > エラー箇所は、routing変数のアクセスでNullPointerExceptionとなっております。
>> >
>> > 現在のバージョンで上記要件を満たすことは可能でしょうか?
>> > 出来ない場合は、Actionクラス内で IF文で対応するしかなさそうですが、できたらクラスごと
>> > 差し替えたいと思い、ご質問させていただきました。
>> >
>> > ■Actionクラス構成
>> > xxx.smart.web.aaa.HogeAction (標準画面用)
>> > xxx.Z001.web.aaa.Z001HogeAction (個別カスタマイズ用)
>> >
>> > xxx.smart, xxx.Z001 は共に addRootPackageName で追加したスマートデプロイのパッケージです。
>> >
>> > ■使用バージョン
>> > cubby-2.0.9.jar
>> > s2-framework-2.4.40.jar
>> >
>> > 以上よろしくお願いいたします。
>> >
>> >
>> > _______________________________________________
>> > cubby-user mailing list
>> > cubby-user @ ml.seasar.org
>> > https://ml.seasar.org/mailman/listinfo/cubby-user
>> >
>>
>>
>>
>> --
>> BABA,Yasuyuki
>> yasuyuki.baba @ gmail.com
>> _______________________________________________
>> cubby-user mailing list
>> cubby-user @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/cubby-user
>>
>
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/cubby-user/attachments/20130313/ea57a0ee/attachment.html>


cubby-user メーリングリストの案内