Revision: 3901
Updated Code
at October 8, 2007 05:42 by thebugslayer
Updated Code
svn co https://javautilcmdline.svn.sourceforge.net/svnroot/javautilcmdline/branches/mvnstarter/myrunbean
Revision: 3900
Updated Code
at October 2, 2007 15:49 by thebugslayer
Updated Code
svn co https://javautilcmdline.svn.sourceforge.net/svnroot/javautilcmdline/trunk/mvnstarter/myrunbean
Revision: 3899
Updated Code
at October 2, 2007 15:36 by thebugslayer
Updated Code
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>deng</groupId>
<artifactId>myrunbean</artifactId>
<name>My Spring RunBean App</name>
<version>1.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>
<!--<repositories>
<repository>
<id>artifactory.cnx</id>
<name>Connextions Repository for Maven2</name>
<url>http://firebird:8081/artifactory/repo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>artifactory.cnx</id>
<name>Connextions Repository for Maven2</name>
<url>http://firebird:8081/artifactory/repo</url>
</pluginRepository>
</pluginRepositories>-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl104-over-slf4j</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/assemble/binary.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
</build>
</project>
src/assemble/binary.xml:
<assembly>
<id>binary</id>
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<includes>
<include>bin/*</include>
</includes>
<fileMode>755</fileMode>
</fileSet>
<fileSet>
<includes>
<include>doc/*</include>
<include>conf/*</include>
</includes>
</fileSet>
<fileSet>
<directory>target</directory>
<outputDirectory>lib</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
conf/beans.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="file:${appHome}/conf/beans.properties"></property>
</bean>
<bean id="main" class="deng.myrunbean.RunnableBeanExecutor" init-method="init" destroy-method="destroy">
<property name="taskExecutor">
<bean class="org.springframework.core.task.SimpleAsyncTaskExecutor"></bean>
</property>
<property name="runnableBeans">
<list>
<ref bean="myApp"/>
</list>
</property>
</bean>
<bean id="myApp" class="deng.myrunbean.MyApp">
<property name="message" value="Hello World!"></property>
</bean>
</beans>
src/main/java/deng/myrunbean/RunBean.java:
package deng.myrunbean;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* Bootstrap a Spring ApplciationContext and invoke a Runnable Bean.
*
* Usage:
* mvn -q exec:java -DappHome=. -Dexec.mainClass=deng.myrunbean.RunBean -Dexec.args="conf/beans.xml main"
*
* @author zemian
*
*/
public class RunBean {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(RunBean.class);
logger.debug("Command arguments " + Arrays.asList(args));
String config = "conf/beans.xml";
String mainBeanName = "main";
if (args.length >= 1) {
config = args[0];
// check for help page.
if(config.toLowerCase().equals("h") || config.toLowerCase().equals("help")){
logger.info("Usage: java RunBean [configFile] [beanName]");
logger.info(" Default configFile = conf/beans.xml, beanName=main");
System.exit(0);
}
}
if (args.length >= 2) {
mainBeanName = args[1];
}
logger.debug("Loading " + config);
FileSystemXmlApplicationContext applicationContext = new FileSystemXmlApplicationContext(config);
applicationContext.registerShutdownHook();
Runnable bean = (Runnable) applicationContext.getBean(mainBeanName);
logger.info("Run bean [" + mainBeanName + "] " + bean);
try {
bean.run();
}
catch (RuntimeException e) {
logger.error("Run error.", e);
}
//logger.info("Done.");
}
}
src/main/java/deng/myrunbean/RunnableBean.java:
package deng.myrunbean;
/**
* @author zemian
*
*/
public interface RunnableBean extends Runnable {
public void init() throws Exception;
public void destroy() throws Exception;
}
src/main/java/deng/myrunbean/RunnableBeanExecutor.java:
package deng.myrunbean;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.task.TaskExecutor;
/**
* A wrapper bean that will execute a list of runnable beans.
*
* @author zemian
*
*/
public class RunnableBeanExecutor implements RunnableBean {
protected Logger logger = LoggerFactory.getLogger(getClass());
protected TaskExecutor taskExecutor;
protected List<RunnableBean> runnableBeans;
public void setTaskExecutor(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void setRunnableBeans(List<RunnableBean> runnableBeans) {
this.runnableBeans = runnableBeans;
}
public void run() {
for(RunnableBean bean : runnableBeans){
logger.info("Executing runnableBean " + bean);
taskExecutor.execute(bean);
}
}
public void destroy() throws Exception {
//call in reverse order.
for(int i = runnableBeans.size()-1; i>=0; i--){
RunnableBean bean = runnableBeans.get(i);
logger.info("Destroying runnableBean " + bean);
bean.destroy();
}
}
public void init() throws Exception {
for(RunnableBean bean : runnableBeans){
logger.info("Initializing runnableBean " + bean);
bean.init();
}
}
}
src/main/java/deng/myrunbean/MyApp.java:
package deng.myrunbean;
import java.io.*;
import java.util.*;
import org.slf4j.*;
public class MyApp implements RunnableBean {
protected Logger logger = LoggerFactory.getLogger(getClass());
protected String message;
public void setMessage(String msg){
message = msg;
}
public void run(){
logger.info(message);
}
public void init() throws Exception{
logger.info("Initialized.");
}
public void destroy() throws Exception{
logger.info("Destroyed.");
}
}
Revision: 3898
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 1, 2007 08:50 by thebugslayer
Initial Code
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>deng</groupId>
<artifactId>myrunbean</artifactId>
<name>My Spring RunBean App</name>
<version>1.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>
<!--<repositories>
<repository>
<id>artifactory.cnx</id>
<name>Connextions Repository for Maven2</name>
<url>http://firebird:8081/artifactory/repo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>artifactory.cnx</id>
<name>Connextions Repository for Maven2</name>
<url>http://firebird:8081/artifactory/repo</url>
</pluginRepository>
</pluginRepositories>-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl104-over-slf4j</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/assemble/binary.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
</build>
</project>
src/assemble/binary.xml:
<assembly>
<id>binary</id>
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<includes>
<include>bin/*</include>
</includes>
<fileMode>755</fileMode>
</fileSet>
<fileSet>
<includes>
<include>doc/*</include>
<include>conf/*</include>
</includes>
</fileSet>
<fileSet>
<directory>target</directory>
<outputDirectory>lib</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
conf/beans.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="file:${appHome}/conf/beans.properties"></property>
</bean>
<bean id="main" class="deng.myrunbean.RunnableBeanExecutor" init-method="init" destroy-method="destroy">
<property name="taskExecutor">
<bean class="org.springframework.core.task.SimpleAsyncTaskExecutor"></bean>
</property>
<property name="runnableBeans">
<list>
<ref bean="myApp"/>
</list>
</property>
</bean>
<bean id="myApp" class="deng.myrunbean.MyApp">
<property name="message" value="Hello World!"></property>
</bean>
</beans>
src/main/java/deng/myrunbean/RunBean.java:
package deng.myrunbean;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* Bootstrap a Spring ApplciationContext and invoke a Runnable Bean.
*
* Usage:
* mvn -q exec:java -DappHome=. -Dexec.mainClass=cnx.aspect.client.cli.RunBean -Dexec.args="conf/beans.xml main"
*
* @author zemian
*
*/
public class RunBean {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(RunBean.class);
logger.debug("Command arguments " + Arrays.asList(args));
String config = "conf/beans.xml";
String mainBeanName = "main";
if (args.length >= 1) {
config = args[0];
// check for help page.
if(config.toLowerCase().equals("h") || config.toLowerCase().equals("help")){
logger.info("Usage: java RunBean [configFile] [beanName]");
logger.info(" Default configFile = conf/beans.xml, beanName=main");
System.exit(0);
}
}
if (args.length >= 2) {
mainBeanName = args[1];
}
logger.debug("Loading " + config);
FileSystemXmlApplicationContext applicationContext = new FileSystemXmlApplicationContext(config);
applicationContext.registerShutdownHook();
Runnable bean = (Runnable) applicationContext.getBean(mainBeanName);
logger.info("Run bean [" + mainBeanName + "] " + bean);
try {
bean.run();
}
catch (RuntimeException e) {
logger.error("Run error.", e);
}
//logger.info("Done.");
}
}
src/main/java/deng/myrunbean/RunnableBean.java:
package deng.myrunbean;
/**
* Base class that provide atomic runnable variable check, and provide
* run, init and destroy methods. Sub class is responsible to set the
* isRunning flag.
*
* @author zemian
*
*/
public interface RunnableBean extends Runnable {
public void init() throws Exception;
public void destroy() throws Exception;
}
src/main/java/deng/myrunbean/RunnableBeanExecutor.java:
package deng.myrunbean;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.task.TaskExecutor;
/**
* A wrapper bean that will execute a list of runnable beans.
*
* @author zemian
*
*/
public class RunnableBeanExecutor implements RunnableBean {
protected Logger logger = LoggerFactory.getLogger(getClass());
protected TaskExecutor taskExecutor;
protected List<RunnableBean> runnableBeans;
public void setTaskExecutor(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void setRunnableBeans(List<RunnableBean> runnableBeans) {
this.runnableBeans = runnableBeans;
}
public void run() {
for(RunnableBean bean : runnableBeans){
logger.info("Executing runnableBean " + bean);
taskExecutor.execute(bean);
}
}
public void destroy() throws Exception {
//call in reverse order.
for(int i = runnableBeans.size()-1; i>=0; i--){
RunnableBean bean = runnableBeans.get(i);
logger.info("Destroying runnableBean " + bean);
bean.destroy();
}
}
public void init() throws Exception {
for(RunnableBean bean : runnableBeans){
logger.info("Initializing runnableBean " + bean);
bean.init();
}
}
}
src/main/java/deng/myrunbean/MyApp.java:
package deng.myrunbean;
import java.io.*;
import java.util.*;
public class MyApp implements RunnableBean {
protected Logger logger = LoggerFactory.getLogger(getClass());
protected String message;
public void setMessage(String msg){
message = msg;
}
public void run(){
logger.info(message);
}
}
Initial URL
Initial Description
Initial Title
spring-runbean standalone app setup: pom.xml, beans.xml, assembly.xml
Initial Tags
Initial Language
Java