Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

Thursday, November 22, 2007

code for Shutdown Hook in java

/*
Pro Spring
By Rob Harrop
Jan Machacek
ISBN: 1-59059-461-4
Publisher: Apress
*/



///////////////////////////////////////////////////////////////////////////////////////
//File: disposeInterface.xml





c:/test.txt




///////////////////////////////////////////////////////////////////////////////////////

import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;

public class ShutdownHook implements Runnable {

private ConfigurableListableBeanFactory factory;

public ShutdownHook(ConfigurableListableBeanFactory factory) {
this.factory = factory;
}

public void run() {
System.out.println("Destroying Singletons");
factory.destroySingletons();
System.out.println("Singletons Destroyed");
}

}

///////////////////////////////////////////////////////////////////////////////////////

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;

public class DestructiveBeanWithInterface implements InitializingBean,
DisposableBean {

private InputStream is = null;

public String filePath = null;

public void afterPropertiesSet() throws Exception {

System.out.println("Initializing Bean");

if (filePath == null) {
throw new IllegalArgumentException(
"You must specify the filePath property of " + DestructiveBean.class);
}

is = new FileInputStream(filePath);
}

public void destroy() {

System.out.println("Destroying Bean");

if (is != null) {
try {
is.close();
is = null;
} catch (IOException ex) {
System.err.println("WARN: An IOException occured"
+ " trying to close the InputStream");
}
}
}

public void setFilePath(String filePath) {
this.filePath = filePath;
}

public static void main(String[] args) throws Exception {
ConfigurableListableBeanFactory factory = new XmlBeanFactory(
new FileSystemResource(
"build/disposeInterface.xml"));

DestructiveBeanWithInterface bean = (DestructiveBeanWithInterface) factory.getBean("destructiveBean");

System.out.println("Calling destroySingletons()");
factory.destroySingletons();
System.out.println("Called destroySingletons()");

}

}

///////////////////////////////////////////////////////////////////////////////////////
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;

public class DestructiveBean implements InitializingBean {

private InputStream is = null;

public String filePath = null;

public void afterPropertiesSet() throws Exception {

System.out.println("Initializing Bean");

if (filePath == null) {
throw new IllegalArgumentException(
"You must specify the filePath property of " + DestructiveBean.class);
}

is = new FileInputStream(filePath);
}

public void destroy() {

System.out.println("Destroying Bean");

if (is != null) {
try {
is.close();
is = null;
} catch (IOException ex) {
System.err.println("WARN: An IOException occured"
+ " trying to close the InputStream");
}
}
}

public void setFilePath(String filePath) {
this.filePath = filePath;
}


}
///////////////////////////////////////////////////////////////////////////////////////


import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;

public class ShutdownHookExample {

public static void main(String[] args) {
ConfigurableListableBeanFactory factory = new XmlBeanFactory(
new FileSystemResource(
"build/disposeInterface.xml"));

Runtime.getRuntime().addShutdownHook(
new Thread(new ShutdownHook(factory)));
DestructiveBeanWithInterface bean = (DestructiveBeanWithInterface) factory.getBean("destructiveBean");
}
}

No comments: