首先感謝老師,老師前面有介紹到同一個(gè)classloader只會(huì)加載同限定名的類一次,而熱加載需要解決這個(gè)問題依靠的是版本的概念,這里老師使用了modify也是同樣的思路,還有就是類加載創(chuàng)建 Class 的 defineclass() 是native 方法,理論上只能通過修改編譯生成的class文件,這里少了這一步,繼續(xù)往下看看會(huì)不會(huì)有其他驚喜。
2017-11-22
loadTimeMap.get(className).getLoadTime() 總報(bào)java.lang.NullPointerException
估計(jì)是這一行寫錯(cuò)了,這里是兩個(gè)=號:if(loadTimeMap.get(className) == null){}
估計(jì)是這一行寫錯(cuò)了,這里是兩個(gè)=號:if(loadTimeMap.get(className) == null){}
2017-11-22
按照視頻講的方式配置,我這里都實(shí)現(xiàn)了Spring Boot熱部署,沒問題的,老師很給力
2017-11-22
MyManager 不是 BaseManager的子類吧?這都不是繼承關(guān)系,而是它的實(shí)現(xiàn)類吧?
2017-11-21
樓上的各位牛批,我是沒在ManagerFactory中的load方法找到
loadClass = myClassLoader.loadClass(MY_MANAGER);
改成loadClass = myClassLoader.findClass(MY_MANAGER);直接報(bào)空指針異常
loadClass = myClassLoader.loadClass(MY_MANAGER);
改成loadClass = myClassLoader.findClass(MY_MANAGER);直接報(bào)空指針異常
2017-11-21
@lanrain 基于Tomcat可以實(shí)現(xiàn)3種方式的熱部署,但是需要限制Tomcat使用的內(nèi)存,防止內(nèi)存溢出,如果發(fā)布為Jar包或者編譯后的類就要根據(jù)第4章所講的,可以自己實(shí)現(xiàn)Java熱加載來實(shí)現(xiàn)
2017-11-21
這個(gè)不合理吧,有點(diǎn)誤導(dǎo)啊,服務(wù)器環(huán)境中如果采用tomcat的這種方式的熱部署,很容易就會(huì)內(nèi)存溢出的,而且發(fā)布為jar包后,怎么替換新生成的jar包或新編譯后的類?
淘寶天貓他們的不停機(jī)更新猜測應(yīng)該是用web服務(wù)器做限流,然后分階段進(jìn)行更新
淘寶天貓他們的不停機(jī)更新猜測應(yīng)該是用web服務(wù)器做限流,然后分階段進(jìn)行更新
2017-11-20