Struts3の新機能

Struts3から、新しい機能が使えるようになっています。

DI

プロパティに@OracleXEアノテーションをつけることで、自動的にOracleXEをダウンロードして変数内にインストールしてくれます。

 public class OracleBean{
   @OracleXE
   prviate Oracle oracleXE;
  
   public void setOracleXE(db){
     oracleXE = db;
   }
   public void start(){
      oracleXE.start();
   }
   public ResultSet query(){
      return oracleXE.executeQuery("select * from Person");
   }
 }

従来のJDBC方式とは異なり、変数にインストールされたDBに直接アクセスできるため、極めて高速にデータアクセスできます。
ただし、インスタンスごとにインストールが行われるので、シングルトンで利用することをお勧めします。
同様に@Oracleアノテーション、@Sybaseアノテーションも利用できますが、課金状況によっては
InvalidLicenseExceptionが発生するようです。


JSR 0401(DatabaseInjection)のサポートです。

SIerモード

コマンドプロンプトから、SIerコマンドを発行することで、Strutsのパッケージ名をすべて独自のパッケージに変更します。

 java -cp struts3.jar SIer jp.co.hogehoge

このコマンドで、「org.apache.struts」部分がすべて「jp.co.hogehoge」に置き換わります。
また同時に、すべてのコメントが削除され、すべてのクラス・メソッドがfinal宣言に変わりますので、
カスタマイズされる心配がなくなります。
デフォルトではActionクラスおよびActionFormクラスもfinalになるので、適宜修正して使用してください。

ダブルサブミット防止機能

クライアントから頻繁にサブミットボタン2度押しが行われた場合、同一URLにリダイレクトさせ続けて
ブラウザ利用を不可能にする制御を行います。
ブラウザがチカチカする恐怖心から、2度とダブルサブミットを行わないようになるでしょう。

Rubyサポート

新たにRubyActionクラスを導入しました。このクラスを継承したクラスは、RubyでActionクラスを記述できます。
RubyActionの派生クラスにはRubyOnRailsActionクラスがあり、Struts上でRubyOnRailsを利用することができます。


これにより、Strutsしか導入させてもらえない環境でもRoRを導入できます。

Channel2アノテーション

複雑な金融計算や物理計算など、自分で実装が困難なメソッドがある場合、@Channel2アノテーションをつけておくと、
自動的にインターネットの掲示板に質問を掲載し、回答がもらえた場合はその回答のロジックを利用してアプリケーションを実行します。
デフォルトのvalue値は"マ板"ですが、自分でセットすることも出来ます。
回答が不正な場合、AsciiArtException、NullPoExceptionなどが発生する可能性があります。


なお、開発環境によっては通信規制のため利用できない為、開発効率が下がる可能性があるようです。