<!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 to set new SoapHandler for each invocation?
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/meselfe">Scale It</a> in <i>JBoss Web Services</i> - <a href="https://community.jboss.org/message/730602#730602">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>The problem is Im trying to figure out how to build a web service client that will be running in a web application and will be used by hundreds of threads concurrently. It must set various security aspects uniquely on every invocation. The security is more customized than what is usually set through the BindingProvider thus Im using a SoapHandler.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>So correct me if Im wrong: what I should do is create one Service instance and set the HandlerResolver only once? Each thread should use the same Service instance to create a Port instance confined to the thread?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The SoapHandler is thus used by all threads concurrently because its bound to the Service instance?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>But then what about the SOAPMessageContext passed to the SoapHandler - is that unique to the thread? I would like to do something like this in the SoapHandler:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>public boolean handleMessage(SOAPMessageContext msgContext)&#160; {</p><p>&#160;&#160; ...</p><p>&#160; msgContext.put(MessageContext.HTTP_REQUEST_HEADERS,Collections.singletonMap(MY_HTTP_HEADER,Collections.singletonList(<span style="text-decoration: underline;">resolver</span>.getUserCredentials())));</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The "<span style="text-decoration: underline;">resolver</span>" above will get the users credentials from the FacesContext in a way that would unique to the thread. I have this working but is this solution correct - Is the use of the SoapHandler and SOAPMessageContext correct from a thread safety perspective?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>BTW where do you find this information about the SoapHandler - Ive been scouring through jsr 181,224,109 and various javadoc but theres hardly any info on the SoapHandler.</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/730602#730602">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Web Services at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2044">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


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

</div>

</body>
</html>