问题描述:weblogic9中 Deployments 进行Stop、Start操作后应用中的线程没有清空,而是原来的线程继续执行,并在重启后产生了新的线程;应用部署页面(不能发图片,用文本代替):
Deployments
------------------------------------------------------------------------------------------
Install  Update  Delete | Start  Stop__________________________________________________________________________________________
    Name                                   State   Type             Deployment Order
__________________________________________________________________________________________
   testApp                                 Active  Web Application  100
__________________________________________________________________________________________"加载配置文件"的信息是应用中一个线程的打印信息,应该是每隔十分钟进行一次。
启动应用后,进行了两次“Stop、Start”的操作,Start时会报
“path=/bea/user_projects/domains/GZAP_DOMAIN/servers/GZAP2/stage/ecdomain/ecdomain/WEB-INF/conf/portal/conf/system.properties
do nothing *******************************!”的日志:在下面可以看出前两次Stop掉的线程还有执行,并有十分钟后打印出“加载配置文件”的信息!inc1111111111
------------------------------------------------------------------------
2009-02-12 14:56:48 加载配置文件
------------------------------------------------------------------------
inc333333333333333
path=/bea/user_projects/domains/GZAP_DOMAIN/servers/GZAP2/stage/ecdomain/ecdomain/WEB-INF/conf/portal/conf/system.properties
do nothing *******************************!inc1111111111
------------------------------------------------------------------------
2009-02-12 14:57:34 加载配置文件
------------------------------------------------------------------------
inc333333333333333
path=/bea/user_projects/domains/GZAP_DOMAIN/servers/GZAP2/stage/ecdomain/ecdomain/WEB-INF/conf/portal/conf/system.properties
do nothing *******************************!inc1111111111
------------------------------------------------------------------------
2009-02-12 14:58:17 加载配置文件
------------------------------------------------------------------------
inc333333333333333
inc1111111111
------------------------------------------------------------------------
2009-02-12 15:06:48 加载配置文件
------------------------------------------------------------------------
inc333333333333333
inc1111111111
------------------------------------------------------------------------
2009-02-12 15:07:34 加载配置文件
------------------------------------------------------------------------
inc333333333333333
inc1111111111
------------------------------------------------------------------------
2009-02-12 15:08:17 加载配置文件
------------------------------------------------------------------------
inc333333333333333
请教一下,谁有什么办法能让Stop操作时清除所有正在运行的线程?或者Stop时不清而在Start时不重新开新的?

解决方案 »

  1.   

    你要搞清楚本质上来说进程不能完全杀死线程
    只能等待线程自己停止。。因为如果强制停止线程 则可能出现资源(io或内存)泄漏因为占用资源的是进程的事情。
    尤其是那些应用自己new出的线程,对于weblogic来说是无法管理的。只有靠应用自身考虑如何释放。一般对于那些使用太多自用线程的应用只有通过重启weblogic server来解决问题。
    就是kill java进程然后重新启动。
      

  2.   


    没错,最好的方法就是不用在控制台上start、stop这种方式
      

  3.   

    netstat -an|grep "WLS端口号"循环判断之,没有记录后,再Start WebLogic就行了。
      

  4.   

    搞错意思了汗
    是你的应用程序里自动启动线程,这些线程又不受容器管理,于是出问题了。最后能够在线程里有个Lister判断,当有停止应用的事件发生时,线线程退出处理。要不然,就会一直在跑了。