This is an automated email from the ASF dual-hosted git repository.
dkulp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/master by this push:
new 97cde56 [CXF-7591] Allow getResponseContext().clear() to clear out
everything to reduce memory usage
97cde56 is described below
commit 97cde56cd73cb03ffb259f01446080fa7748ab8b
Author: Daniel Kulp <[email protected]>
AuthorDate: Fri Dec 15 12:47:02 2017 -0500
[CXF-7591] Allow getResponseContext().clear() to clear out everything to
reduce memory usage
---
.../java/org/apache/cxf/endpoint/ClientImpl.java | 29 +++++++++++++++++-----
.../cxf/jaxws/context/WrappedMessageContext.java | 11 +++++---
2 files changed, 31 insertions(+), 9 deletions(-)
diff --git a/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
b/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
index 2d57879..59cbe7d 100644
--- a/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
+++ b/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
@@ -240,19 +240,36 @@ public class ClientImpl
public Map<String, Object> getRequestContext() {
if (isThreadLocalRequestContext()) {
- if (!requestContext.containsKey(Thread.currentThread())) {
- Map<String, Object> freshRequestContext = new
ConcurrentHashMap<String, Object>(8, 0.75f, 4);
+ final Thread t = Thread.currentThread();
+ if (!requestContext.containsKey(t)) {
+ Map<String, Object> freshRequestContext = new
ConcurrentHashMap<String, Object>(8, 0.75f, 4) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void clear() {
+ super.clear();
+ requestContext.remove(t);
+ }
+ };
freshRequestContext.putAll(currentRequestContext);
- requestContext.put(Thread.currentThread(), new
EchoContext(freshRequestContext));
+ requestContext.put(t, new EchoContext(freshRequestContext));
}
- latestContextThread = Thread.currentThread();
- return requestContext.get(Thread.currentThread());
+ latestContextThread = t;
+ return requestContext.get(t);
}
return currentRequestContext;
}
public Map<String, Object> getResponseContext() {
if (!responseContext.containsKey(Thread.currentThread())) {
- responseContext.put(Thread.currentThread(), new HashMap<String,
Object>());
+ final Thread t = Thread.currentThread();
+ responseContext.put(t, new HashMap<String, Object>() {
+ private static final long serialVersionUID = 1L;
+ @Override
+ public void clear() {
+ super.clear();
+ responseContext.remove(t);
+ }
+ });
}
return responseContext.get(Thread.currentThread());
diff --git
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
index 990e02f..d35cb0b 100644
---
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
+++
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
@@ -181,9 +181,14 @@ public class WrappedMessageContext implements
MessageContext {
}
public void clear() {
- //just clear the JAXWS things....
- for (String key : jaxws2cxfMap.keySet()) {
- remove(key);
+ if (message instanceof Message) {
+ //server side, just clear the JAXWS things....
+ //Otherwise lots of CXF things will not be found
+ for (String key : jaxws2cxfMap.keySet()) {
+ remove(key);
+ }
+ } else {
+ message.clear();
}
}
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].