ESBCOMP-109 Fix memory leak due to HttpAdapter for JAXWS.

Thanks to Paul Carter Brown for the patch
master
David BRASSELY 2014-05-21 22:26:09 +02:00
parent 0322675e81
commit 3bbe6c90e1
1 changed files with 10 additions and 2 deletions

View File

@ -63,6 +63,8 @@ import com.sun.jbi.httpsoapbc.servletsupport.HttpServletNormalizer;
import com.sun.jbi.internationalization.Messages;
import com.sun.xml.ws.api.server.WSEndpoint;
import com.sun.xml.ws.transport.http.HttpAdapter;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
@ -109,6 +111,8 @@ public class JAXWSGrizzlyRequestProcessor implements Adapter {
*/
Map exchangeIDToContext = new java.util.concurrent.ConcurrentHashMap();
private static Map<WSEndpoint, HttpAdapter> httpAdapterMap = new ConcurrentHashMap<WSEndpoint, HttpAdapter>();
HttpSoapBindingLifeCycle lifeCycle;
/**
@ -398,8 +402,12 @@ public class JAXWSGrizzlyRequestProcessor implements Adapter {
WSEndpoint wsEndpoint = targetEndpoint.getWSEndpoint();
// TODO: don't re-create the httpadapter each time
HttpAdapter httpAdapter = HttpAdapter.createAlone(wsEndpoint);
HttpAdapter httpAdapter = httpAdapterMap.get(wsEndpoint);
if (httpAdapter == null) {
httpAdapter = HttpAdapter.createAlone(wsEndpoint);
httpAdapterMap.put(wsEndpoint, httpAdapter);
}
try {
httpAdapter.invokeAsync(con);