[
https://jira.jboss.org/jira/browse/JBESB-2301?page=com.atlassian.jira.plu...
]
Kevin Conner commented on JBESB-2301:
-------------------------------------
Okay, having discussed this with Stefano and read up on the specs we have a way forward
for the mapping.
There is an issue with the SOAPClient action in that is specifies a soapAction parameter
whereas what it *really* wants is the operationName. (this probably means that the
*other* SOAPclient is also incorrect)
The soapAction is not guaranteed to be present and, although there are default mappings
that can be applied to the WSDL 1.1 and WSDL 2.0 information, it is not guaranteed to be
unique.
In the same vein, the method name cannot be guaranteed to be unique as it is possible to
specify bindings that alter the default generation.
The only unique attribute is the operationName and this will be present, as part of the
@WebMethod annotation, if it has been overridden by a binding. We should be checking for
this value and using it, falling back to the method name if it is not present.
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