[
https://issues.apache.org/jira/browse/CXF-2772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp updated CXF-2772:
-----------------------------
Fix Version/s: NeedMoreInfo
This is likely fixed in CXF 2.4.0-SNAPSHOT and at least improved in 2.3.3. A
lot of work was gone in 2.4 to reduce the memory footprint. A testcase I have
(JAX-WS TCK) that deploys over 100 wars, each exposing at least one, usually 2
or 3 services with WSDL's requires significant less memory. With 2.2.x, I
needed to start tomcat with at least -Xmx256M. With 2.3.3, I can use -Xmx128
to get the services started, but 192M to actually run the TCK tests. With
2.4.0, I can start with -Xmx84M and run with 128M.
In addition to that, the scalability of the HTTP transport has been improved
with less locking, less requirements for caching, etc...
If the testcase could be checked with 2.4.0-SNAPSHOT, that would be great.
> CLONE -OutOfMemoryError with many service endpoints
> ---------------------------------------------------
>
> Key: CXF-2772
> URL: https://issues.apache.org/jira/browse/CXF-2772
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.2.6
> Environment: Windows XP, Sun JDK 1.6, Tomcat 6.0.20
> Reporter: Aditya Gujrathi
> Labels: TomcatWS
> Fix For: NeedMoreInfo
>
> Attachments: VisualVM-ServerStartup1.jpg
>
>
> I am deploying 5 WAR files in my Tomcat server. They together expose multiple
> endpoints (60+), each of which publish a simple WSDL.
> When the server is started, performance with many concurrent service calls
> degrades and memory consumption increases steadily, ultimately leading to an
> OutOfMemoryException.
> In a simple test it showed that simply displaying the service endpoints
> exposed WSDL in the browser is sufficient to trigger the OutOfMemoryError.
> Earlier, our application was using JAXWS and it used to work fine.
> Screenshot using jVisualVM is attached. Following is the exception stacktrace:
> {code}
> WARNING: Application
> {http://schemas.xmlsoap.org/ws/2004/08/eventing}ws-eventing-service#{http://schemas.xmlsoap.org/ws/2004/08/eventing}SubscribeOp
> has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Java heap space
> at
> org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:155)
> at
> org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:85)
> at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:121)
> at
> org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:60)
> at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
> at
> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at
> org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
> at
> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
> at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:109)
> at
> org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
> at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:406)
> at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:178)
> at
> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOfRange(Arrays.java:3209)
> at java.lang.String.<init>(String.java:215)
> at java.lang.String.copyValueOf(String.java:2880)
> at sun.net.www.MessageHeader.mergeHeader(MessageHeader.java:435)
> at sun.net.www.MessageHeader.parseHeader(MessageHeader.java:367)
> at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:699)
> at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)
> at
> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1072)
> at
> java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:373)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2110)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2087)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1985)
> at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:640)
> at
> org.apache.cxf.transport.TransportURIResolver.resolve(TransportURIResolver.java:112)
> at
> org.apache.cxf.catalog.CatalogXmlSchemaURIResolver.resolveEntity(CatalogXmlSchemaURIResolver.java:78)
> at
> org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1872)
> at
> org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1653)
> at
> org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:219)
> at
> org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:121)
> at
> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:509)
> at
> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:382)
> at
> org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1901)
> at
> org.apache.ws.commons.schema.SchemaBuilder.handleImport(SchemaBuilder.java:1615)
> at
> org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:224)
> at
> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:523)
> at
> org.apache.cxf.common.xmlschema.SchemaCollection.read(SchemaCollection.java:182)
> at org.apache.cxf.wsdl11.SchemaUtil.extractSchema(SchemaUtil.java:133)
> at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:81)
> at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:65)
> at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:60)
> at
> org.apache.cxf.wsdl11.WSDLServiceBuilder.getSchemas(WSDLServiceBuilder.java:357)
> {code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira