Hi James,

You did not mention the Axis or Java version you are using. See if this
applies to your current use:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4724129

--Thunder 

-----Original Message-----
From: James CE Johnson [mailto:[EMAIL PROTECTED] 
Sent: Monday, September 20, 2004 8:57 AM
To: [EMAIL PROTECTED]
Subject: OutOfMemoryException from my Axis client

Has anybody else seen anything like this?

I've got an Axis-based server (Server "A") that must call another
Axis-based server (Server "B"). In testing we discovered that Server A
was
running out of memory. Upon tracking it down we discovered that the bits
of Server A that are client to Server B are the culprit. I now have a
stripped-down command-line test client invoking methods on Server B.
That
test client is running out of memory.

Server B provides three webservice calls. Two return simple, small
strings. The third can return a string that is a meg or two. If my test
client starts as few as 10 threads calling each method in turn it will
run
out of memory before all 10 can complete.

I've bumped up the -Xxxx options but that only delays the problem. With
enough client-side memory I can squeeze out a few more threads but not
enough.

I've also discovered that I can (apparently) run as many iterations of
my
test as I want with no memory leaks if I have only a single thread
invoking the webservice. By "single thread" I mean one and only one
thread, not multiple threads synchronized. (When I have multiple
synchronized threads - such that only one is calling at any single point
in time - I still run out of memory.)

So, my question is, has anyone seen this kind of thing in an Axis
client?
Does Axis store some ThreadLocal data that might be causing this? Is
there
a way I can cleanly/safely have each thread "shut down" the Axis client
when a given thread is done?

Ultimately, I'll be calling "Server B" from within my EJBs and it would
be
very bad for them to run out of memory...

Thanks,
James

Reply via email to