ビジネス クラスを EJB3 セキュリティ アノテーションで保護しています。Spring コントローラーからこれらのメソッドを呼び出したいのですが、どうすればよいですか?
編集セットアップに関する情報を追加します。Web コンテナには Tomcat を使用し、EJB を Tomcat に埋め込むには OpenEJB を使用しています。私は春のどのバージョンにも落ち着いていないので、多かれ少なかれ提案を受け付けています。
現在のセットアップの編集User
は次のように機能します。ログインフォームと、 SessionContext 内に pojo を配置するコントローラーがあります。誰かがサイトの保護された部分にアクセスするたびに、アプリケーションはユーザー pojo をチェックし、そこにある場合はロールをチェックしてからページを表示し、適切なメッセージを表示しないかログイン ページにリダイレクトしない場合はページを表示します。これで、 openejb security examples にあるこのコードのリミックスUser
である可能性のあるセキュリティ コンテキストをバイパスする内部の call メソッドのおかげで、ビジネス コールが行われます。
Caller managerBean = (Caller) context.lookup("ManagerBeanLocal");
managerBean.call(new Callable() {
public Object call() throws Exception {
Movies movies = (Movies) context.lookup("MoviesLocal");
movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
List<Movie> list = movies.getMovies();
assertEquals("List.size()", 3, list.size());
for (Movie movie : list) {
movies.deleteMovie(movie);
}
assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
return null;
}
});