先日、アノテーションを利用した認証について書いたが、1つ問題が見つかった。
初回リクエスト時に、Actionクラスのアノテーション情報がリフレクションAPIで正しく取得できない
インターセプタ内で、
invocation.getThis().getClass().getAnnotation(XXX.class)
みたいな感じで呼び出されたメソッドを定義しているクラスのアノテーションを取得しているのだが、初回リクエスト時のみnullが返されてしまう。今のところ、この問題が発生するのは初回リクエスト時のみなので、S2ContainerのHotDeployが関係しているのかもしれない。
宿題
- CoolDeployで同様の問題が発生しないか確認する
- リフレクションAPIの使いかたに問題がないか確認する
- SAStruts、S2Containerのソースを読む(ちょっとしんどそう・・・)