<!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="http://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;">
    Remoting 2 bug: No reuse of ClientInvoker with params invokerDestructionDelay and socketFactoryClassName
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/qliphot">Patrick Speer</a> in <i>JBoss Remoting Development</i> - <a href="http://community.jboss.org/message/552308#552308">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hello,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I think I found a bug in InvokerRegistry.createClientInvoker(InvokerLocator locator, Map configuration) which leads to superflous instances of ClientInvoker (and therefore no reusing of an existing one).</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I'm using JBoss AS 4.2.2.GA with JBoss Remoting 2.2.3-SP2. My ClientInvoker is configured via params with the following options:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&lt;attribute name="socketFactoryClassName" isParam="true"&gt;package.of.MySSLSocketFactory&lt;/attribute&gt;<br/>&lt;attribute name="invokerDestructionDelay" isParam="true"&gt;30000&lt;/attribute&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I was wondering why my application opened up new sockets for every remote call. The problem is, that for every call a new ClientInvoker is created and no reusing takes place:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>In class InvokerRegistry.createClientInvoker line "ClientInvoker invoker = getRegisteredClientInvoker(locator, configuration);" checks for a suitable Invoker. If none is found, a new invoker is created and via "addRegisteredClientInvoker(invoker, l, configuration);" added to the holderList of the clientLocator. The problem is, that e.g. the constructor of RemoteClientInvoker modifies the configuration map. Then this modified map is passed to addRegisteredClientInvoker. But this map is used to identifiy the specific invoker in getRegisteredClientInvoker =&gt; so getRegisteredClientInvoker will never return an existing invoker.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Attached is a patch which fixes this problem. This all sounds a little bit confused, but I'm sure, if you have a look at the attached patch, you will understand my problem.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Regards,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Patrick</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/552308#552308">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Remoting Development at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2051">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


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

</div>

</body>
</html>