You must use setDaemon(true);
Now your thread is generated as a child process of your thread and
can be stopped by the JVM. Default is false and then the thread
just lives on.

HTH

Andreas

----- Original Message -----
From: <[EMAIL PROTECTED]>
To: "jboss mailing list " <[EMAIL PROTECTED]>
Sent: Thursday, September 25, 2003 10:08 AM
Subject: [JBoss-user] mbean question


> Hi all,
>
> I'm trying to write a basic MBean.
> This Mean runs a Thread which checks the file system for new files. If a
> new file is found it should perform some action.
>
> My problem however is that whenever I undeploy, or stop the MBean using
> the jmx-console application, the MBean keeps running.
>
> I have no idea what I'm doing wrong here.
>
> Below is my code. Could somebody please tell me what it is that I'm doing
> wrong here?
>
> Thanks a lot,
>
> Harm de Laat
> Informatiefabriek
> The Netherlands
>
>
> package nl.informatiefabriek.jmxlizard;
>
> import java.io.File;
> import java.io.FileInputStream;
> import java.io.FileOutputStream;
> import java.io.IOException;
> import java.util.Vector;
>
> import org.jboss.system.ServiceMBeanSupport;
>
> /**
>  * @author harm
>  */
> public class JBossLizard
>         extends ServiceMBeanSupport
>         implements JBossLizardMBean, Runnable {
>
>         private Thread lizard;
>
>         public JBossLizard() {
>         }
>
>         public String getName() {
>                 return "JBossJMXLizard";
>         }
>
>         /* (non-Javadoc)
>          * @see java.lang.Runnable#run()
>          */
>         public void run() {
>
>                 boolean running = true;
>                 while (running) {
>                         /* wait for interval milliseconds */
>                         sleep(interval);
>
>                         /* do some checking */
>                         File checkDir = new File(absoluteCheckPath);
>                         if (!checkDir.exists()) {
>                                 log.warn(
>                                         "Directory does not exist: " +
> checkDir.getAbsolutePath());
>                                 sleep(1000 * 5);
>                                 // we wait for five seconds to avoid a
> huge system load
>                                 continue;
>                         }
>
>                         if (!checkDir.isDirectory()) {
>                                 log.warn(
>                                         "Directory: "
>                                                 +
> checkDir.getAbsolutePath()
>                                                 + "is not a directory.");
>                                 sleep(1000 * 5);
>                                 continue;
>                         }
>
>                         /* retrieve the listing */
>                         String[] dirlist1 = checkDir.list();
>                         for (int i = 0; i < dirlist1.length; i++) {
>                                 /* don't touch hidden files */
>                                 if (dirlist1[i].startsWith(".")) {
>                                         // System.out.println("Hidden
> file... Leaving it untouched: " + dirlist1[i]);
>                                         break;
>                                 }
>
>                                 /* get file extension */
>                                 int index = dirlist1[i].lastIndexOf('.');
>                                 String checkFileExtension =
>                                         dirlist1[i]
>                                                 .substring(index + 1,
> dirlist1[i].length())
>                                                 .toLowerCase();
>                                 System.out.println(
>                                         "File extension is: " +
> checkFileExtension);
>                                 /* see if it is a file we should process
> */
>                                 if (checkFileExtension
>                                         .equals(this
> .getFileExtension().toLowerCase())) {
>                                         System.out.println(
>                                                 "This is the correct file
> extension.");
>                                         /* Create a file handler */
>                                         File f = new File(checkDir,
> dirlist1[i]);
>
>                                         // process the file here!
>                                 }
>
>                         }
>                 }
>                 System.out.println("Lizard stopped...");
>         }
>
>         private void sleep(long howlong) {
>                 try {
>                         Thread.sleep(howlong);
>                 } catch (Exception e) {
>                 }
>         }
>
>         /* MBean methods */
>         protected void startService() throws Exception {
>                 // Create a new thread with this monitor
>                 lizard = new Thread(this, "JBossMonitor");
>                 // Set it as a daemon
>                 lizard.setDaemon(true);
>                 // start the thread
>                 lizard.start();
>         }
>
>         protected void stopService() {
>                 lizard.interrupt();
>         }
> }
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> JBoss-user mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-user



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to