2015-10-13 32 views
1

Websphere在调用@Startup EJB时使用的用户上下文在哪里设置?Websphere上的@Startup EJB的用户上下文

我有一个启动EJB的Java EE应用程序,我知道它在调用EJB时​​设置了一个用户,因为由于缺少角色导致调用失败。但是,我无法找到设置用户的位置。

+1

你能显示失败的堆栈跟踪吗?对@ @ Startup EJB的'@ PostConstruct'的调用不需要任何授权。但是,如果@ PostConstruct使另一个需要授权的调用失败,在这种情况下,您需要以编程方式设置上下文(使用'WSLogin'或等价物)或使用'@ RunAs'作为EJB并配置一个运行用户(注意:这将影响EJB所做的所有调用,而不是只是来自'@ PostConstruct')。 –

+0

这个问题不是关于失败(我知道'@ RunAs',尽管它不像我预期的那样工作,但那是另一个问题)。这个问题是关于用户上下文的。我知道有一个,因为WAS在异常中给出了用户名。我无法弄清楚在哪里设置它。我知道我可能不需要设置它,如果@ RunAs'按照广告方式工作,但我仍然想知道:-) –

回答

1

EJB规范指出会话bean @PostConstruct方法在未指定的安全上下文中调用,WebSphere不记录特定的安全上下文或允许对其进行配置。实际上,单身会话bean @PostConstruct通常会以未经授权的用户作为安全上下文来调用。如果设置特定的安全上下文很重要,那么您可以打开一个WebSphere RFE,但我会建议找到另一种解决方案来避免特定于供应商的解决方案。

+0

谢谢,这有帮助。我发布了一个关于我的问题的问题来获得'@ RunAs'在这里工作:http://stackoverflow.com/questions/33118280/cant-get-runas-to-work-in-an-ejb, –