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