本篇文章為大家展示了dll文件怎么在JavaWeb項(xiàng)目中實(shí)現(xiàn)動態(tài)加載,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的大余網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
第一步 建立一個監(jiān)聽類
建立監(jiān)聽類的作用是在應(yīng)用中間件啟動時自動執(zhí)行加載程序。
1)創(chuàng)建一個類實(shí)現(xiàn)ServletContextListener 接口
2)實(shí)現(xiàn)contextInitialized方法
3)在項(xiàng)目的web.xml 文件中配置此監(jiān)聽類
第二步 將dll文件所在的路徑添加到系統(tǒng)環(huán)境java.library.path 中
添加過程需要使用到反射機(jī)制來進(jìn)行,不能使用System.setProperty()進(jìn)行設(shè)置,設(shè)置了也無效。直接看代碼:
private void addDirToPath(String s){ try { //獲取系統(tǒng)path變量對象 Field field=ClassLoader.class.getDeclaredField("sys_paths"); //設(shè)置此變量對象可訪問 field.setAccessible(true); //獲取此變量對象的值 String[] path=(String[])field.get(null); //創(chuàng)建字符串?dāng)?shù)組,在原來的數(shù)組長度上增加一個,用于存放增加的目錄 String[] tem=new String[path.length+1]; //將原來的path變量復(fù)制到tem中 System.arraycopy(path,0,tem,0,path.length); //將增加的目錄存入新的變量數(shù)組中 tem[path.length]=s; //將增加目錄后的數(shù)組賦給path變量對象 field.set(null,tem); } catch (Exception e) { e.printStackTrace(); } }
第三步 加載dll文件
接下來就可以寫上下文初始化的方法了:
public void contextInitialized(ServletContextEvent arg0) { //獲取存放dll文件的絕對路徑(假設(shè)將dll文件放在系統(tǒng)根目錄下的WEB-INF文件夾中) String path=arg0.getServletContext().getRealPath("WEB-INF"); //將此目錄添加到系統(tǒng)環(huán)境變量中 addDirToPath(path); //加載相應(yīng)的dll文件,注意要將'\'替換為'/' System.load(path.replaceAll("\\\\","/")+"/XXXX.dll"); }
第四步 重啟啟動應(yīng)用中間件(Tomcat|Weblogic)
至此就可以在你的java程序中使用dll文件的方法了。
上述內(nèi)容就是dll文件怎么在JavaWeb項(xiàng)目中實(shí)現(xiàn)動態(tài)加載,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享文章:dll文件怎么在JavaWeb項(xiàng)目中實(shí)現(xiàn)動態(tài)加載
網(wǎng)頁地址:http://sd-ha.com/article36/pepepg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、虛擬主機(jī)、App設(shè)計、域名注冊、電子商務(wù)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)