spring boot入門之——熱部署
阿新 • • 發佈:2018-07-12
配置 xtend java類 throw not catch arr 直接 路徑 場景:
本地調試(頻繁的啟動/停止服務器)
線上發布(每次都需要啟動/停止服務器)
優點:
無論本地還是線上,都適用
無需重啟服務器,提高開發、調試效率;提升發布、運維效率,降低運維成本
java實現熱部署有哪幾種方式?
通過配置tomcat,直接把項目放在webapps裏。
在tomcat\conf\server.xml中的<host></host>中添加<context debug="0" docBase="" path="" privileged="true" reloadable="true"/>標簽
在tomcat\conf\Catalina\localhost中添加xml,關鍵屬性<context docBase="" reloadable="true" />
實現一個Java類熱加載的實例
//自定義類加載器,需實現findClass方法(核心類) public class MyClassLoader extends ClassLoader { //定義加載的路徑 private String classPath; public MyClassLoader(String classPath) { //調用父類的加載器 super(ClassLoader.getSystemClassLoader()); this.classPath = classPath; } //1.重新findClass方法 @Override protected Class<?> findClass(String name) throws ClassNotFoundException { byte[] b = this.loadData(name); return this.defineClass(name, b, 0, b.length); } //加載class文件中的內容 private byte[] loadData(String name) { //.替換為//表示 name = name.replaceAll(".", "//"); try { FileInputStream is = new FileInputStream(new File(classPath + name + ".class")); ByteArrayOutputStream aos = new ByteArrayOutputStream(); int b = 0; while((b = is.read())!=-1){ aos.write(b); } is.close(); aos.close(); return aos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }
spring boot入門之——熱部署