Eclipse遠(yuǎn)程調(diào)試Weblogic運(yùn)行的源代碼(轉(zhuǎn)載 )
看過許多遠(yuǎn)程調(diào)試的例子,大多數(shù)都是針對tomcat或者jboss服務(wù)器的,很少能搜索到weblogic服務(wù)器的遠(yuǎn)程調(diào)試?yán)雍臀恼拢靶┨煸陧?xiàng)目開發(fā)的時(shí)候嘗試了一下,感覺十分得不錯(cuò),拿出來跟大家分享一下,不過我要多羅嗦幾句。
遠(yuǎn)程調(diào)試的好處:我們現(xiàn)在開發(fā)的模式大多是本機(jī)用eclipse集成source管理環(huán)境,集成ant的編譯環(huán)境,用weblogic插件集成
運(yùn)行環(huán)境,基本上一個(gè)eclipse又當(dāng)?shù)之?dāng)媽的,這樣的好處就是開發(fā)環(huán)境配置集中,普通的程序員只要按步驟做就可以了,開發(fā)步驟簡單,對整個(gè)項(xiàng)目是一
件好事。那么站在普通的程序員角度?什么也沒有學(xué)到,就是在模仿而已,如果本機(jī)的硬件配置如果很低的話,意味著開發(fā)效率的降低,同時(shí)一點(diǎn)開發(fā)樂趣都沒有,
就是在實(shí)現(xiàn)業(yè)務(wù)而已,是很難了解工具本身的特點(diǎn)。遠(yuǎn)程調(diào)試的好處就是把集中的配置分散開來,讓資源分配在不同的機(jī)器上,降低本機(jī)資源的使用。換一句話,就
是將運(yùn)行環(huán)境和開發(fā)環(huán)境的徹底的分離出來,對于那些實(shí)時(shí)對應(yīng)和保守的程序員來說,簡直就是一個(gè)福音,用戶環(huán)境一旦出現(xiàn)什么bug的話,你個(gè)人可以在最短的
時(shí)間內(nèi)再現(xiàn)和調(diào)試,而不用運(yùn)行本機(jī)的測試環(huán)境。
遠(yuǎn)程調(diào)試的準(zhǔn)備知識:使用Java 平臺調(diào)試架構(gòu),Java Platform Debugger
Architecture,簡稱JPDA,具體的可以參照API文檔里面的Tool Support里面的Java Platform
Debugger Architecture
(JPDA)(我的jdk文檔是1.42的,如果是別的版本,你搜索一下jpda就可以找到相關(guān)的資料)。換一句話,我們借助于這個(gè)平臺來debug應(yīng)用
程序,其實(shí)我們也會看到eclipse里面也有debug的,那么它們是不是一回事呢?我倒是搜索了一下,基本上eclpse的調(diào)試就是使用和擴(kuò)充這個(gè)工
具平臺的,只不過遠(yuǎn)程調(diào)試需要我們自己手動配置而已,而你在本地調(diào)試的時(shí)候,那些配置都是插件幫你完成的,你本人就是一個(gè)使用者而已,所以沒有關(guān)心的那么
多。
具體的實(shí)現(xiàn)步驟:配置服務(wù)器的啟動參數(shù),如果熟悉weblogic的話,會發(fā)現(xiàn)weblogic更多是用java實(shí)現(xiàn)的。對于我們來說,如果是windows用戶的話,你只需要修改domain
里面的startWebLogic.cmd批處理文件,你在這個(gè)文件里設(shè)置一個(gè)系統(tǒng)變量,
白話就是你添加一行set JAVA_DEBUG=-Xdebug -Xnoagent -Xrunjdwp:
transport=dt_socket,address=4000,server=y,suspend=n。這樣是不夠的,你還需要將這句話添加到%
JAVA_HOME%"bin"java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS%
-Dweblogic.Name=%SERVER_NAME%
-Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE%
-Djava.security.policy="%WL_HOME%"server"lib"weblogic.policy"
weblogic.Server里
修改后的結(jié)果%JAVA_HOME%"bin"java %JAVA_VM% %JAVA_DEBUG% %MEM_ARGS%
%JAVA_OPTIONS%weblogic.Name=%SERVER_NAME%
-Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE%
-Djava.security.policy="%WL_HOME%"server"lib"weblogic.policy"
weblogic.Server
這樣做的目的就是讓你啟動weblogic的同時(shí),把JPDA也啟動起來,至于你的weblogic的實(shí)際啟動參數(shù)是不是和我一樣,我就不知道
了,反正這么寫的目的就是讓JPDA的參數(shù)也加載到你的啟動參數(shù)列表里,啟動weblogic的同時(shí)也將JPDA啟動起來,具體的修改還是根據(jù)自己的實(shí)際
情況來定,但是目的是相同的。
配置客戶端:這邊使用的客戶端工具自然就是eclipse了,原先你在本地的工程配置保持不變,換一句話說你也必須把自己的工程import到
你的eclipse,使用和操作上和本地的沒有任何的變化。但是你需要建立一個(gè)remote java
Application,讓后配置一下就可以了(可惜我不會在jr里上穿圖片,否則抓一下圖,一看就明白了)。簡單地說,在你的debug里有java
application,java applet,junit等等,當(dāng)然那里也有remote java
Application,你新建一個(gè)就可以了,簡單配置一下遠(yuǎn)程主機(jī)的地址和監(jiān)聽端口(就是你在服務(wù)器配置過程指定的4000),選擇一下你的工程,然后
給這個(gè)remote java Application起個(gè)名字之類。
需要注意的地方:在你debug的時(shí)候,一定要保證你本地的source和服務(wù)器上運(yùn)行的環(huán)境上
的跑的class一致,換一句話說一定要及時(shí)更
新source,否則debug的結(jié)果就是莫名其妙的。還有你把自己的source編譯后的jar包或者文件夾放到服務(wù)器上,一定要每次都發(fā)布一遍,如果
你偶爾忘記一次,那么雖然你服務(wù)器上跑的class和本地的source一致,由于你沒有發(fā)布,那么debug的結(jié)果,也不一致了,所以保持一致性是兩重
的含義。
小結(jié)
其實(shí)配置遠(yuǎn)程debug并不困難,基本的原理很簡單,服務(wù)器端在啟動的服務(wù)器的同時(shí),也把JPDA明確的啟動起來,分配一個(gè)端口號,那么你在客
戶端只要連接上JPDA服務(wù)(sun稱為工具平臺,我個(gè)人稱為服務(wù))便能測試了,給我的感覺更像是一個(gè)socket編程實(shí)現(xiàn)的服務(wù)。至于其他的服務(wù)器的遠(yuǎn)
程調(diào)試?原理一定是一樣的,只不過你需要根據(jù)它們提供的文檔,相應(yīng)的修改遠(yuǎn)程調(diào)試的參數(shù)而已。同時(shí)聲明一下,我個(gè)人的水平也是很一般,在認(rèn)識和經(jīng)驗(yàn)上也有
一定的欠缺,如果本貼子有什么不妥和不對的地方,請大家指出和共同學(xué)習(xí)。