Hello, I have the following scenario:
Servlet -> EjbOne -> EjbTwo My expectation is that @RunAs of the servlet will be propagated to EjbOne and the @RunAs of the EjbOne will be propagated to @EjbTwo. But this does not happen - see the output below. When i remove @RunAs annotation from the servlet the @RunAs of EjbOne is propagated correctly. Actual output: EjbOne (Before EjbTwo) expected role: Manager, isCallerInRole("Manager"): false EjbOne (Before EjbTwo) expected role: Manager, isCallerInRole("VP"): false EjbOne (Before EjbTwo) expected role: Manager,) isCallerInRole("Administrator"): false EjbTwo expected role: VP, isCallerInRole("Manager"): false EjbTwo expected role: VP, isCallerInRole("VP"): false EjbTwo expected role: VP, isCallerInRole("Administrator"): false EjbOne (After EjbTwo) expected role: Manager, isCallerInRole("Manager"): false EjbOne (After EjbTwo) expected role: Manager, isCallerInRole("VP"): false EjbOne (After EjbTwo) expected role: Manager, isCallerInRole("Administrator"): false Expected output: EjbOne (Before EjbTwo) expected role: Manager, isCallerInRole("Manager"): true EjbOne (Before EjbTwo) expected role: Manager, isCallerInRole("VP"): false EjbOne (Before EjbTwo) expected role: Manager,) isCallerInRole("Administrator"): false EjbTwo expected role: VP, isCallerInRole("Manager"): false EjbTwo expected role: VP, isCallerInRole("VP"): true EjbTwo expected role: VP, isCallerInRole("Administrator"): false EjbOne (After EjbTwo) expected role: Manager, isCallerInRole("Manager"): true EjbOne (After EjbTwo) expected role: Manager, isCallerInRole("VP"): false EjbOne (After EjbTwo) expected role: Manager, isCallerInRole("Administrator"): false Here is the source of the application: https://github.com/kal0ian/Examples Regards, Kaloyan