我的业务类受 EJB3 安全注释保护,现在我想从 Spring 控制器调用这些方法,我该怎么做?
编辑我将添加一些关于我的设置的信息,我使用 Tomcat 作为 webcontainer,使用 OpenEJB 将 EJB 嵌入到 tomcat 中。我没有选择任何版本的 spring 所以它或多或少地接受建议。
编辑当前设置以这种方式工作:我有一个登录表单+控制器,它User
在 SessionContext 中放置了一个 pojo。每次有人访问站点的安全部分时,应用程序都会检查用户 pojo,如果它在那里检查角色然后显示页面,如果它没有显示适当的消息或重定向到登录页面。现在,业务调用是通过调用方法进行的,User
该方法绕过了可能的安全上下文,该上下文是openejb 安全示例中的此代码的混音:
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;
}
});