jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/ws/model/SOAPSEIModel.java
--- a/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/ws/model/SOAPSEIModel.java Fri Feb 10 00:39:51 2017 -0800
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/ws/model/SOAPSEIModel.java Thu Feb 16 13:14:39 2017 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,6 +33,8 @@
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
/**
* Creates SOAP specific RuntimeModel
@@ -41,6 +43,8 @@
*/
public class SOAPSEIModel extends AbstractSEIModelImpl {
+ private final Lock lock = new ReentrantLock();
+
public SOAPSEIModel(WebServiceFeatureList features) {
super(features);
}
@@ -72,15 +76,22 @@
public Set<QName> getKnownHeaders() {
Set<QName> headers = new HashSet<QName>();
- for (JavaMethodImpl method : getJavaMethods()) {
- // fill in request headers
- Iterator<ParameterImpl> params = method.getRequestParameters().iterator();
- fillHeaders(params, headers, Mode.IN);
+
+ try{
+ lock.lock();
+ for (JavaMethodImpl method : getJavaMethods()) {
+ // fill in request headers
+ Iterator<ParameterImpl> params = method.getRequestParameters().iterator();
+ fillHeaders(params, headers, Mode.IN);
// fill in response headers
- params = method.getResponseParameters().iterator();
- fillHeaders(params, headers, Mode.OUT);
- }
+ params = method.getResponseParameters().iterator();
+ fillHeaders(params, headers, Mode.OUT);
+ }
+ }finally
+ {
+ lock.unlock();
+ }
return headers;
}