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
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);
}
}
}
浙公网安备 33010602011771号