<!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: How does a @EJB dependency injection work on a Stateless Bean? Will that injected class behave like an instance variable in that stateless session bean?
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/umbreak">Didac Montero Mendez</a> in <i>EJB3</i> - <a href="https://community.jboss.org/message/792647#792647">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>And in reference to the class SecondaryStatelessBean, this is an example of how a Stateless class should NOT be used.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>From JavaEnterPrise Beans:</p><blockquote class="jive-quote"><p>The procedure runs from beginning <span style="font-size: 10pt;">to end, finally returning the result. Once the invocation completes, nothing about the </span><span style="font-size: 10pt;">data that was manipulated or the details of the request is available. When finished </span><span style="font-size: 10pt;">servicing a method invocation, an SLSB instance may be reused as the target for a new </span><span style="font-size: 10pt;">request.</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Bypassing conversational state doesn&rsquo;t mean that a stateless session bean can&rsquo;t have <span style="font-size: 10pt;">instance variables or maintain any kind of internal state. Nothing prevents you from </span><span style="font-size: 10pt;">keeping a variable that tracks the number of times a bean instance has been called or</span></p><p>a variable that saves data for debugging. However, it is important to remember that <span style="font-size: 10pt;">this state may never be visible to a client. The caller of an SLSB can&rsquo;t assume that the </span><span style="font-size: 10pt;">same bean instance will service all of its requests. Instance variables may have different </span><span style="font-size: 10pt;">values in different bean instances, so their state is likely to appear to change randomly </span><span style="font-size: 10pt;">as stateless session beans are swapped from one client to another. Therefore, anything </span><span style="font-size: 10pt;">you reference in instance variables should be generic and not leaked out through </span><span style="font-size: 10pt;">the API.</span></p></blockquote><p>As a summary: SLSB are reusable. The container guarantees concurrency having a pool of instances, so NEVER two users will consume the same instance at the same time. The container choose one instance among all the available instances on the pool.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>For this reason, in the example, the value retrieved in primaryStatelessBean.getMessage() is the one set in the previous call. If you perform the test with ab (Apache Benchmark) with concurrency, you would see that different instances are created and that different values would be shown.</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/792647#792647">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in EJB3 at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>