Issue #1968 Prevent deadlock on thinclient startup
Change-Id: I522082d3c633b583e9b72941ec17464731ceba5e Former-commit-id:a4f5efb30e
[formerly7ba7863740
] [formerlyff6220147b
] [formerlya4f5efb30e
[formerly7ba7863740
] [formerlyff6220147b
] [formerlydbd1f3d5e5
[formerlyff6220147b
[formerly fd9305775d1c0de574d1c0c9b47aac911b356de6]]]] Former-commit-id:dbd1f3d5e5
Former-commit-id:f8f1904c75
[formerlyd9de37190d
] [formerly 4a1c19cd5ef49ce5844d32126a91ca862df4d3ad [formerly0929802c01
]] Former-commit-id: 4a884adba09890a691d502ceddc27714db33590c [formerly17be4bbb77
] Former-commit-id:6dd7964b7d
This commit is contained in:
parent
a81b2de3b8
commit
9120b57b4f
1 changed files with 7 additions and 5 deletions
|
@ -45,6 +45,7 @@ import com.raytheon.uf.common.util.ServiceLoaderUtil;
|
|||
* to accept class parameter, deprecate old versions. Improve performance
|
||||
* of getJaxbManager().
|
||||
* Feb 07, 2013 1543 djohnson Use ServiceLoader to find how to load jaxbable classes, defaulting to SerializableManager.
|
||||
* May 01, 2013 1968 djohnson Prevent deadlock due to SerializableManager threads needing to serialize things.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -54,10 +55,6 @@ import com.raytheon.uf.common.util.ServiceLoaderUtil;
|
|||
|
||||
public final class SerializationUtil {
|
||||
|
||||
private static final IJaxbableClassesLocator jaxbableClassesLocator = ServiceLoaderUtil
|
||||
.load(IJaxbableClassesLocator.class,
|
||||
SerializableManager.getInstance());
|
||||
|
||||
private static volatile JAXBManager jaxbManager;
|
||||
|
||||
private SerializationUtil() {
|
||||
|
@ -79,7 +76,12 @@ public final class SerializationUtil {
|
|||
synchronized (SerializationUtil.class) {
|
||||
result = jaxbManager;
|
||||
if (result == null) {
|
||||
List<Class<ISerializableObject>> jaxbClasses = jaxbableClassesLocator
|
||||
// This cannot be eagerly created as
|
||||
// SerializableManager.getInstance() spawns threads which
|
||||
// were causing a deadlock
|
||||
List<Class<ISerializableObject>> jaxbClasses = ServiceLoaderUtil
|
||||
.load(IJaxbableClassesLocator.class,
|
||||
SerializableManager.getInstance())
|
||||
.getJaxbables();
|
||||
jaxbManager = result = new JAXBManager(
|
||||
jaxbClasses.toArray(new Class[jaxbClasses.size()]));
|
||||
|
|
Loading…
Add table
Reference in a new issue