[esb-issues] [JBoss JIRA] Commented: (JBESB-2301) Handle wise threading/pooling

Kevin Conner (JIRA) jira-events at lists.jboss.org
Thu Jan 22 10:06:44 EST 2009


    [ https://jira.jboss.org/jira/browse/JBESB-2301?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12449217#action_12449217 ] 

Kevin Conner commented on JBESB-2301:
-------------------------------------

One other issue that needs to be addressed is the mapping within the WSEndpoint.getWSMethods() method.

This method creates a mapping (on every invocation!!!) and is supposed to use the soapAction as the key.  Unfortunately it is using the *method name* from the class as the key.

We need to intercept this method and cache the map, using the soapAction as the key.

> Handle wise threading/pooling
> -----------------------------
>
>                 Key: JBESB-2301
>                 URL: https://jira.jboss.org/jira/browse/JBESB-2301
>             Project: JBoss ESB
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: Web Services
>    Affects Versions: 4.4 CP1
>            Reporter: Kevin Conner
>            Assignee: Daniel Bevenius
>             Fix For: 4.4 CP2
>
>
> The current wise codebase (in ESB4.4 and SOA 4.3) is not thread safe and needs some changes made.  There are also issues with classloading and clearing of clients.
> The current WSDynamicClientFactory singleton contains a Map which references the WSDynamicClient instances using a name.  This map is current implemented as a HashMap but is accessed concurrently.
> In addition, the name used as the key is specified within the configuration so there is a possibility of clashes with other deployments, especially as this is used to create temporary files on the filesystem.
> Instantiation
> -------------
> The factory checks this map to see whether a specified client exists and, if not present, creates one but it does this without synchronizing and can lead to multiple threads clashing during the construction of the same client.  In addition the context classloader of the first deployment to create the client will be used to create the classes and this can leak into other deployments.
> Invocation
> ----------
> The invocation of the service is handled through the jax-ws Port api and this is not thread-safe.  The wise codebase shares the same client instance with multiple threads and, therefore, can suffer from concurrency problems.
> Cleanup
> -------
> The clearCache method on the factory singleton removes *all* clients from the map and is not thread-safe.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the esb-issues mailing list