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