axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Torben Riis (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AXIS2-4163) ServiceClient - finalize() method calls super.finalize() too early
Date Sun, 06 Sep 2009 13:00:02 GMT

    [ https://issues.apache.org/jira/browse/AXIS2-4163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12751896#action_12751896
] 

Torben Riis commented on AXIS2-4163:
------------------------------------

Hi,

I think even this version of finalize is still not good enough. 
If you have a setup with a client invoking an asynchronous service, which starts a local server
for "replyTo" calls, the call to cleanup in finalize triggers the local server to shutdown
on GC.

In my case I had a ThreadPoolExecutor 200 ServiceClient requests, and of cause, before all
jobs had been executed gc starts invoking finalize on finished jobs, which triggers the local
replyTo server to shutdown...

My circumvention was to override finalize, but I still believe that it would be better if
the default implementation was removed..

Regards
Torben Riis
Multi-Support A/S R&D

> ServiceClient - finalize() method calls super.finalize() too early
> ------------------------------------------------------------------
>
>                 Key: AXIS2-4163
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4163
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: client-api
>    Affects Versions: 1.4.1
>            Reporter: Erik-Berndt Scheper
>         Attachments: stacktrace.txt
>
>
> The finalize() method in ServiceClient.java incorrectly calls super.finalize() before
cleaning up:
>     protected void finalize() throws Throwable {
>         super.finalize();
>         cleanup();
>     }
> This leads to EJBClassLoader errors in GlassFish when the garbage collector runs. To
fix this, it should be changed to:
> // Manual finalizer chaining
> @Override protected void finalize() throws Throwable {
>     try {
>         // Finalize subclass state
>         cleanup();
>     } finally {
>         super.finalize();
>     }
> }
> See attached stack trace for details.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message