JDBC驱动的动态加载
2019獨角獸企業重金招聘Python工程師標準>>>
???? 需求描述:通過導入jdbc的驅動包,配置數據庫的JDBC連接參數。來動態連接關系型數據庫。要求不用重啟JVM進程。
? ? ?解決思路:首先我知道classloader是用來做類加載的。所以就看classloader的文檔。了解到可以使用URLClassLoader來動態的加載jar包。然后是Class.forName生成Driver對象注冊到DriverManager里面去。
????bug1:DriverManager死活注冊不了驅動
? ? bug2: ?報PermSize錯誤。
? ??
? ?bug1: 國內的寫技術文章的有沒有公德心啊,沒測試的代碼你向網上貼毛啊。而且都是相互抄。最后終于在google 的一個夾角里面發現了一個文章,這是JDK的問題。解決方法需要一個driver的代理類。
? ? ? DriverManager.registerDriver(new DriverProxy(driver));
? ? ??DriverProxy是Driver的代理對象。實現Driver接口。
? ?bug2: PermSize ;才開始的解決思路是設置PermSize的大小 ?不起作用。后來判斷是DriverManager注冊驅動的時候,同一個驅動多次注冊造成PermSize的泄露,也就是驅動對象放在常量池里面。然后就加了一個判斷。這里要說下。DriverManager原本自帶了幾個驅動,就因為這幾個驅動,沒怎么仔細看,結果判斷錯誤浪費一上午時間。我本機沒環境,包丟過去測試的。
? ??
教訓:少用百度,仔細看日志。
????
? ??
????????????
??????
轉載于:https://my.oschina.net/1987times/blog/199034
總結
以上是生活随笔為你收集整理的JDBC驱动的动态加载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMware手动启动USB Arbitr
- 下一篇: 使用自定义的按钮替换默认的input t