用该类,作为引导,来启动对应的jar服务
一.服务类名Boot.java
import java.io.File;
import java.io.FilenameFilter;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;/**
* java服务启动类
* @author
*
*/
public class Boot { //private ClassLoader classLoader= null ;
/**
* classloadrser 作用是加载lib下所有jar文件,给后续使用
* @return
* @throws MalformedURLException
*/
private ClassLoader createClassLoader() throws Exception{
ClassLoader cLoader = null;
String bPath = System.getProperty("user.dir");
//String bPath2 = new File(System.getProperty("user.dir"), "..").getCanonicalPath();
System.out.println("当前目录bPath:" + bPath);
//String bPath3 = new File(System.getProperty("user.dir")).getParent(); //System.out.println("上级目录:" + bPath3);
File libsDir = new File(bPath, "lib");
File[] libFiles = libsDir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if (name.endsWith(".jar"))
return true;
return false;
}
});
int jarCounts = libFiles.length;
System.out.println("jarCounts:" + jarCounts);
URL[] url = new URL[jarCounts];
for (int i = 0; i < jarCounts; i++) {
url[i] = libFiles[i].toURI().toURL();
}
cLoader = new URLClassLoader(url, Thread
.currentThread().getContextClassLoader());
Thread.currentThread().setContextClassLoader(cLoader); return cLoader;
}
//命令输入参数是服务的名字,比如testServer: nohup java -jar Boot.jar TestServer >>testlog.log 2>&1 &
public static void main(String[] args) {
try {
Boot boot = new Boot();
ClassLoader classLoader = boot.createClassLoader();
Object serverObject = classLoader.loadClass(args[0]).newInstance();
//init是testServer.jar中的方法
Method serverInitMethod = serverObject.getClass().getMethod("start",
new Class<?>[] {});
serverInitMethod.invoke(serverObject, new Object[] {});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
并打包成Boot.jar ,打包时候记得设置main类
--------------
二.服务测试类TestServer.java
public class TestServer {
public void init(){
System.out.println("init1234");
}
public void start(){
System.out.println("start1234");
}
}
并打包成TestServer.jar 并拷贝到./lib目录下
三.启动命令
nohup java -jar Boot.jar TestServer >>testlog.log 2>&1 &
另外:
如果用的是Boot.class,命令就是nohup java Boot TestServer >>testlog.log 2>&1 &
nuhup java 命令不挂断 ,生产环境用