相父

匆匆,那些年,那些人,那些事,珍惜身边的她

1)bat执行程序:

 @ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
cd ..
SET classpath=classes/.
title 
SET jvmargs=-Xms64m -Xmx512m -XX:+UseParallelGC -XX:ParallelGCThreads=%NUMBER_OF_PROCESSORS%
SET mainClass=com/flow/MuleStart
java  -Duser.timezone=Asia/Shanghai -Xms64m -Xmx512m %jvmargs% -classpath %classpath% %mainClass%
endlocal
PAUSE

2)

java的main类:

package com.flow;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

import org.mule.MuleServer;
import org.mule.api.MuleContext;
import org.mule.api.MuleException;
import org.mule.api.context.MuleContextBuilder;
import org.mule.config.DefaultMuleConfiguration;
import org.mule.config.builders.AutoConfigurationBuilder;
import org.mule.context.DefaultMuleContextBuilder;
import org.mule.context.DefaultMuleContextFactory;

/**
 * 项目 启动mule的方法
 */
public class MuleStart {

public static void main(String args[]) throws Exception {
      //先加载mule的jar包和项目所需要的jar包
        JarLoader jarLoader = new JarLoader((URLClassLoader)ClassLoader.getSystemClassLoader());  
        loadjar(jarLoader, System.getProperty("user.dir")+"/mulelib");  
        loadjar(jarLoader, System.getProperty("user.dir")+"/lib");  

   args = new String[]{"sms"};
System.out.println("执行"+args[0]+"的mule任务");
MuleServer muleServer = new MuleServer("./sms_"+args[0]+".xml");
    muleServer.start(true, true);
    System.out.println("成功执行"+args[0]+"的mule任务");
    System.out.println("等待stop指令结束"+args[0]+"的mule任务");
    
        InputStreamReader is=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(is);
boolean flag=true;
System.out.println("等待stop指令结束"+args[0]+"的mule任务");
        while(flag){
        try{
         Thread.sleep(1000);
        String name=br.readLine();
        if("stop".equals(name)){
         muleServer.shutdown();
         flag=false;
         System.out.println("成功结束"+args[0]+"的mule任务,ctrl+c退出cmd窗口");
        }else if(name.length()>0){
         System.out.println("停止服务,请输入stop命令!");
        }
        }catch(Exception e){
            System.out.println("系统错误!");
            e.printStackTrace();
        }
        }
        try{
            is.close();
            br.close();
        }catch(IOException e){
            System.out.println("关闭流发生错误!");
            e.printStackTrace();
        }
}

    private static class JarLoader {  
        private URLClassLoader urlClassLoader;  
        public JarLoader(URLClassLoader urlClassLoader) {  
            this.urlClassLoader = urlClassLoader;  
        }  
          
        public void loadJar(URL url) throws Exception {  
            Method addURL = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);  
            addURL.setAccessible(true);  
            addURL.invoke(urlClassLoader, url);  
        }  
    }  
  
    private static void loadjar(JarLoader jarLoader, String path) throws MalformedURLException, Exception{  
        File libdir = new File(path);  
        if (libdir != null && libdir.isDirectory()) {  
              
            File[] listFiles = libdir.listFiles(new FileFilter() {  
                  
                @Override  
                public boolean accept(File file) {  
                    // TODO Auto-generated method stub  
                    return file.exists() && file.isFile() && file.getName().endsWith(".jar");  
                }  
            });  
              
            for (File file : listFiles) {  
                jarLoader.loadJar(file.toURI().toURL());  
            }  
              
        }else{  
            System.out.println("[Console Message] Directory ["+path+"] does not exsit, please check it");  
            System.exit(0);  
        }  
    }  
  
}
posted on 2013-02-20 16:34  相父  阅读(476)  评论(0)    收藏  举报