范围'session'对于当前线程不活动;如果您打算从单例引用它,请考虑为此bean定义范围代理

时间:2012-12-11 06:59:15

标签: spring jsf-2 spring-security

我使用JSF和Spring安全性。我实施它。
我的代码:

@Named("userDetailsManagerImpl")
@Scope("application")
public class UserDetailBusinessImpl implements UserDetailsService {
    @Inject
    private MenuBackingBean menu;
}

一切似乎都很好。但是我必须定义MenuBackingBean是应用程序范围。我只想要它的会话范围。所以我将范围更改为会话,但我在下面收到错误:
    引起:org.springframework.beans.factory.BeanCreationException:创建名为'userDetailsManagerImpl'的bean时出错:当前线程的作用域'session'无效;考虑为这个bean定义一个范围代理,如果你打算从一个单独的引用它 我认为这个错误是由弹簧安全设置应用程序的默认范围造成的 我在谷歌搜索但没有回答这个问题(也许我没有正确的关键字搜索)。请帮我解决,谢谢你 更多信息我使用:

  • JSF 2.0
  • Spring security 3.1.2
  • 从JSR 330命名和注入
  • springframework包中的范围注释

1 个答案:

答案 0 :(得分:0)

我想你在某个地方有这个代码:

@Inject
private YourSessionBean yourSessionBean;

// later in some method
this.yourSessionBean.doSomething();

尝试在所有这些情况下使用javax.inject.Provider:

@Inject
private Provider<YourSessionBean> yourSessionBeanProvider;

// later in some method
this.yourSessionBeanProvider.get().doSomething();