<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
Re: Every single remote ejb call starts full authentication process with SecurityDomain cache-type="default"
</h3>
<span style="margin-bottom: 10px;">
created by <a href="https://community.jboss.org/people/Michael_Gronau">Michael Gronau</a> in <i>JBoss AS 7 Development</i> - <a href="https://community.jboss.org/message/724613#724613">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>Hi Darran,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I think it now gets i little bit more complicated. Let me try to explain. </p><p>For our client application we have the requirement to be able to use multiple users per JVM. in Jboss 4.x and 5.x this could be achieved simply with the JBoss client login module by calling login() method of the module in the current thread for the current user. In JBoss 7 i found the only solution by using the class org.jboss.ejb.client.ThreadLocalContextSelector<...> to set the current EJBClientContext object for the current thread and user. With this approach i was able to call ejb methods with different users in the same jvm -> the server-side CallerPrincipal is correctly set for every call.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The following pseudo code works like a charm, which is the authentication process is only called once per connection:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>In the main thread</p><p>create connection</p><p>set ThreadLocalContext()</p><p>lookup the ejb.</p><p>called it in a loop</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Everything is ok here. But when I start another thread to call the ejb then every call starts the authentication process:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>In the main thread:</p><p>create connection</p><p>set the context</p><p>create a new thread and start.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>in the run method of the thread:</p><p>set threadlocal context for the desired user (which is already successfully authenticated).</p><p>lookup the ejb</p><p>call it in a loop (now every call must be authenticated)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>am I missing something?? Or do I have to do something else instead of using org.jboss.ejb.client.ThreadLocalContextSelector<...>.</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/724613#724613">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss AS 7 Development at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2225">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>