[英]EJB 3.1 remove invocation context for security purpose (ThreadLocal, …)
我在一个Glassfish服务器(前端)上有一个webapp,在另一个Glassfish服务器上有一个EJB 3.1应用程序(后端)。 webapp通过远程调用与EJB 3.1进行通信。
我想传递上下文数据(用户数据ie),而不必将其定义为每个业务操作的输入参数。
我有一个想法,但不确定它是否会起作用:使用ThreadLocal存储数据,但ThreadLocal只能在一个服务器上使用(意味着JVM)=>使用InvocationContext对象并创建拦截器以将用户数据添加到ContextData Map 。
你怎么看待这件事? 任何其他想法都非常欢迎! ;-)
UPDATE
在第一次回答后,我用Google搜索了一下,找到了注释@CallerPrincipal 。
如何在远程调用之前设置此对象?
容器已经处理好了,所以你不必自己编写代码。
在EJB中,您可以访问EJBContext,它具有getCallerPrincipal()方法,该方法将为您提供调用者身份。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.