I'm currently using CXF 2.0.3.  While playing around with WS-Addressing, I've
noticed a number of errors that occur when sending lots of messages.  I've
been able to reproduce them by making minor changes to the ws_addressing
sample provided with CXF.

During these tests, I turned off logging for anything less than WARNING.  In
Client.java, I changed the following lines:

implicitPropagation(port);
explicitPropagation(port);
implicitPropagation(port);

to the following:

int i = 0;
while(true) {
        port.greetMeOneWay("Kyle");
        i++;
        if(i % 10 == 0) {
                System.out.println("Sent " + i + " messages.");
        }
}

After calling greetMeOneWay() around 760 times in this way, I get an
OutOfMemoryError.  I profiled the client and server using YourKit, and both
the client and server seem to have a memory leak -- the client runs out of
memory first.  The problem seems to be MAPCodec.uncorrelatedExchanges map --
it's using nearly all the heap memory available.

I tried changing port.greetMeOneWay("Kyle") to port.sayHi() (which is not a
one-way operation).  Every once in a while (around every 100 messages), it
will halt and eventually display the following:

Jan 4, 2008 6:12:00 PM org.apache.cxf.endpoint.ClientImpl waitResponse
WARNING: Timed out waiting for response to operation
{http://apache.org/hello_world_soap_http}sayHi.

YourKit indicates no memory leak on the client, but the server has the same
memory leak the previous example had.

Anyone have any ideas what's happening here?  Thank you for your time.
-- 
View this message in context: 
http://www.nabble.com/WS-Addressing-OutOfMemoryErrors-under-load-tp14628989p14628989.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to