Main entry improvement to allow run by procrun as Windows Service
-----------------------------------------------------------------
Key: SM-1839
URL: https://issues.apache.org/activemq/browse/SM-1839
Project: ServiceMix
Issue Type: Improvement
Components: servicemix-core
Affects Versions: 3.3
Environment: Windows 2000, 2003+
Reporter: Jason Zhang
Fix For: 3.3.1
Basically, Apache Daemon procrun requires two entries, one for start and one
for stop. org.apache.servicemix.Main only allow one entry. e.g. start. To use
with procrun, Main.java need a bit of change to allow second entry (stop) and
use this entry to unblock container. Here is the homemade patch for Main.java
in trunk
Index: src/main/java/org/apache/servicemix/Main.java
===================================================================
--- src/main/java/org/apache/servicemix/Main.java (revision 761422)
+++ src/main/java/org/apache/servicemix/Main.java (working copy)
@@ -33,7 +33,10 @@
* @version $Revision$
*/
public final class Main {
-
+
+ // singelton container
+ private static SpringJBIContainer container;
+
private Main() {
}
@@ -48,9 +51,18 @@
System.out.println();
final ApplicationContext context;
- if (args.length <= 0) {
+ if (args.length <= 0 || "start".equals(args[0])) {
System.out.println("Loading Apache ServiceMix from
servicemix.xml on the CLASSPATH");
context = new ClassPathXmlApplicationContext("servicemix.xml");
+ } else if ("stop".equals(args[0])) {
+ System.out.println("Stopping Apache ServiceMix");
+ if (container != null){
+ container.shutDown();
+ container.destroy();
+ }
+ // return here may cause jni hangs waiting Worker thread finish
+ // but procrun can fix it by setting --StopTimeout
+ return;
} else {
String file = args[0];
@@ -65,7 +77,7 @@
System.out.println("Loading Apache ServiceMix from file: " +
file);
context = new FileSystemXmlApplicationContext(file,
processors);
}
- SpringJBIContainer container = (SpringJBIContainer)
context.getBean("jbi");
+ container = (SpringJBIContainer) context.getBean("jbi");
container.onShutDown(new Runnable() {
public void run() {
if (context instanceof DisposableBean) {
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.