0

Java EE6CDIインターセプターのセットアップに問題があります。埋め込まれたGlassfishを使用していますが、Webアプリケーションのbeans.xmlでインターセプターを指定しています。

<beans
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
      http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
    <interceptors>
        <class>ServiceInterceptor</class>
    </interceptors>
</beans>

私はこのBeanを保護しようとしています:

@Named
//@Stateless
@RequestScoped
public class SecuredMethodJSFBean /*implements Serializable*/{
    @Inject
    protected SecuredMethodSample securedMethodSample;

    /*
    @CurrentUser
    @SessionScoped
    @Inject
    protected RuntimePrincipalAware principal;
    //protected JSFLoginBean jsfLoginBean;
    */

    public SecuredMethodJSFBean()
    {
        super();
        System.out.println("creating secured method jsf bean");
    }

    @Secured("adfadfafd")
    public void doSomething()
    {
        //System.out.println("\n\n\n\nprincipal:" + principal);
        //System.out.println("principal:" + jsfLoginBean.getPrincipal());

        //securedMethodSample.doSomething(jsfLoginBean.getPrincipal().getName());
        //return(jsfLoginBean.getPrincipal().getName());

        //securedMethodSample.doSomething(principal.getName());
        //return(principal.getName());
        //return("secured-method");

        securedMethodSample.doSomething("testing ...");
    }
}

インターセプターを実行するにはどうすればよいですか?

また、サーブレットが使用するBeanのメソッド呼び出しをインターセプトするためにインターセプターを使用しようとしています。それらの豆は豆なので、私はそれらを傍受できるはずです。しかし、私はそうすることができません。私はもともとサーブレットでメソッド呼び出しを直接インターセプトしようとしていましたが、CDI Beanではないため、意味がありません。

ありがとう、

ウォルター

4

2 に答える 2

1

「Webアプリケーションのbeans.xmlでインターセプターを指定しました」

@Securedは別のプロジェクト/jarで定義されていますか?その場合、そのbeans.xmlでそれを有効にする必要があります。

于 2013-02-23T18:28:02.297 に答える
0

私の質問にもっとよく答えるために、私は次のことをしました:

  1. jarの代わりにプロジェクトejbを作成しました(maven内)。
  2. インターセプター(src / main / resources / META-INF)を指定/宣言するejb-jar.xmlファイルを作成しました。
  3. このインターセプターを使用するプロジェクトでは、タイプをejbとして指定すると、正しく取得されます。

ウォルター

于 2013-02-22T03:50:11.840 に答える