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

Andreas Veithen commented on AXIS2-5110:
----------------------------------------

The statement made by IBM support that timer threads must be defined as daemon 
is actually not correct. The correct statement is that every application must 
make sure that it cancels all the timers it has created. If that is the case, 
then the Timer objects don't need to (and shouldn't) be defined as daemon. 
There are even some versions of the IBM JDK where creating Timer objects with 
daemon=true leads to a memory leak (see APAR IZ94326).

There is a known problem in Axis2 that prevents it from canceling one of the 
timers it creates during startup. See AXIS2-4263 for a description and a 
workaround.

I have developed a tool [1] that allows to easily identify applications that 
fail to destroy threads and timers (and other resources). The primary goal of 
that tool is to identify the root cause of class loader leaks, but it could 
also be useful in your case to identify applications that prevent WebSphere 
from stopping properly. The tool works well on WebSphere for distributed 
platforms, but I guess that on z/OS some features will not be available due to 
differences in WebSphere and the JRE.

[1] http://code.google.com/p/arit/

> Compatibility with WebSphere Application Server on z/OS
> -------------------------------------------------------
>
>                 Key: AXIS2-5110
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5110
>             Project: Axis2
>          Issue Type: Improvement
>          Components: kernel
>    Affects Versions: 1.5.1
>         Environment: WebSphere on z/OS
>            Reporter: William Walsh
>            Priority: Minor
>
> In using Axis2 with WebSphere across multiple platforms we have found that 
> once we invoked a web service against Axis2 on WebSphere for z/OS that the 
> application server would not shutdown properly.  (The architecture on z/OS is 
> very different than other platforms - it uses a number of address spaces to 
> host WebSphere and the control and servant address spaces would not 
> terminate.)  We asked IBM about this and it has to do with differences in how 
> the JVM is implemented and started by WebSphere on z/OS.  The long and the 
> short of this is that Timer threads must be defined as daemon to allow 
> WebSphere to terminate properly on z/OS.
> I'd like to propose a patch for this and would like to know/confirm:
> Are these classes where I saw non-daemon threads created the appropriate 
> places for change?
> /org/apache/axis2/util/threadpool/ThreadPool.java
> /org/apache/axis2/util/threadpool/DefaultThreadFactory.java
> /org/apache/axis2/transport/http/server/DefaultThreadFactory.java
> I would propose adding conditional code to force daemon threads when running 
> on z/OS:
>   if (System.getProperty("os.name").equals("z/OS")
> Would this be appropriate, or do you feel the check needs to be more 
> explicit; also checking for WebSphere?

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to