java服务引导启动类(一)

8 篇文章 0 订阅

用该类,作为引导,来启动对应的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 命令不挂断 ,生产环境用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值