在我的web应用程序中,我有一个范围的会话bean,用于保存连接到底层系统所需的一些凭据信息(存储需要发送的SAML以进行底层Web服务访问)。
我有那个bean在调用web-serivce之前在正确的位置注入了凭证。
@Autowired
private MyScopedSession myScopedSession;
@Autowired
private SomeWebService someWebService;
public void someCall() {
...
injectSamlPart
...
}
我想添加后台任务(一个war包装web-app +一些后台任务)每小时运行一次我使用调度程序。问题是这个后台任务不能使用scoped-session bean(因为它不是由http请求驱动而有意义)。所以我得到了这样的错误:
Scope 'session' is not active for the current thread;
但是我想为我的后台任务定义一个静态凭证(例如,定义一个系统帐户),从而为后台任务定义一种替换bean MyScopedSession,以便自动装配工作。这可能吗?
我确实可以做的是将我的bean定义为
@Autowired
private SomeWebService someWebService;
public void someCall(MyScopedSession myScopeSession) {
...
injectSamlPart
...
}
但是我不喜欢这么多,因为我不希望通过我的所有业务服务传递参数我的凭证(可能是10层以上的bean,直到我的后台任务,或者直到我的rpc调用)< / p>
您可以推荐任何解决方案或体系结构更改吗?
答案 0 :(得分:1)