web
本文介紹如何利用Eclipse外掛程式WebLogic Plugin在Eclipse中的使用。
Eclipse是目前非常流行的開發平台,開放擴充的架構讓很多程式員找到了自己個人化的工作環境。
問題提出:
WebLogic目前是使用比較多的應用伺服器之一,Eclipse是流行的IDE,如何整合起來開發使用呢?
解決方案:
採用BEA提供的WebLogic Plugin來進行整合開發。
安裝
JDK:1.4.2或1.5.0 從http://java.sun.com上去下載安裝,如果是WebLogic 8.X.X系列的版本,應當選用JDK 1.4.2的版本。
Eclipse:3.1.2 從http://www.eclipse.org 上去下載解壓
WebLogic Plugin 從https://eclipse-plugin.projects.dev2dev.bea.com/下載
技巧 Eclipse提示之外掛程式管理
提示:新下載的外掛程式PlugIn一定不要都放在原始的Eclipse目錄下去,一大堆,累死你。
前提是你已經安裝好了Eclipse工具了,比如安裝在E:\OpenSource\Eclipse\目錄下,以下這個目錄以%ECLIPSE_HOME%來進行表示;
此時預設的外掛程式是在%ECLIPSE_HOME%\plugins目錄中的;
在%ECLIPSE_HOME%下建立一個PlugInsNew的目錄;比如:E:\OpenSource\Eclipse\PlugInsNew\
你下載了個新的外掛程式,比如叫做:XYZ
那麼就在%ECLIPSE_HOME%\PlugInsNew\目錄下建立XYZ目錄,目錄裡面是eclipse目錄,eclipse目錄包含有features與plugins兩個子目錄;結構如下圖所示:
把下載的新外掛程式的檔案放在以下相應目錄中
%ECLIPSE_HOME%\PlugInsNew\XYZ\eclipse\features
%ECLIPSE_HOME%\PlugInsNew\ XYZ\eclipse\plugins
建立相關的.link的檔案
然後在%ECLIPSE_HOME%\links目錄裡建立一個XYZ.link的檔案
內容如是:path=E:/OpenSource/Eclipse/PlugInsNew/XYZ就一行這樣的路徑指示而已。
這樣,如果你下載了多個外掛程式就可以如法炮製建立多個Link檔案,想載入哪個外掛程式就把哪個外掛程式的Link檔案放到%ECLIPSE_HOME%\links的目錄中即可,使用與管理都很方便,建議千萬不要放在預設的安裝目錄中;
如果你的%ECLIPSE_HOME%與此不同,請修改XYZ.link檔案裡的路徑
刪除,關閉Eclipse
刪除%ECLIPSE_HOME%\links\XYZ.link檔案即可
刪除%ECLIPSE_HOME%\PlugInsNew\XYZ整個目錄及檔案
重新啟動Eclipse即可使用
WebLogic Plugin現在有兩個版本1.1.1和2.0.0。1.1.1隻是能夠配置一台伺服器,並只提供啟動停止伺服器的功能,沒有Redeploy、Undeploy;2.0.0可以配置多台,可以Redepoly、Undeploy,不過沒有Deploy功能,而且還有一大BUG,就是只是每次重啟Eclipse要重新設定一下使用者與密碼即可。對1.1.1感興趣的朋友,可以查看:http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=124&threadID=34318&tstart=120。下面介紹2.0.0版本的整合使用方法。以及Bug的修改。
WebLogic Plugin 2.0.0 功能
- 啟動、停止WebLogic 伺服器
- 利用JDT為高度J2EE的應用程式
- 選擇WebLogic域
- 配置WebLogic伺服器的啟動參數
要求
- Eclipse SDK 2.0.0 或更高的版本
- WebLogic Server 6.0或更高的版本
安裝
外掛程式安裝方法有兩種方式:
- 一種就是採用上一節的《Eclipse提示之外掛程式管理》
- 另一種就是通過Update Manager的形式來下載安裝
地址是:https://eclipse-plugin.projects.dev2dev.bea.com/update
安裝步驟如下:
Help è Software Updates è Find and Install…
配置WebLogic Plugin
- 菜單 Windows è Preferences ,然後選中WebLogic節點可以看到右邊配置的伺服器執行個體列表,可以增加、修改、刪除相應的伺服器配置。
- 現在開始增加伺服器配置,在General標籤設定以下各個參數
- 設定伺服器配置的顯示名稱
- 選擇你的WebLogic Server的版本
- 設定BEA Home 的目錄
- 設定WebLogic Home的目錄
- 設定Domain 的名稱
- 設定Domain 的目錄
- 設定Server 的名稱
- 設定Host機器名稱或IP,本機填localhost即可(weblogic.Admin使用的)
- 設定連接埠號碼(weblogic.Admin使用的)
- 設定SSL連接埠號碼(weblogic.Admin使用的),注意:這個要先在控制台http://localhost:7001/console/ 裡先設定好才行,要不然儲存時檢測不到就儲存不了。
- 設定管理員名稱(是有許可權啟動這個Server的使用者名稱稱如預設的weblogic)
- 設定密碼
- 在Classpath配置標籤欄裡,可以設定如下參數:
- Pre-startup WebLogic Classpath,是設定在WebLogic類庫載入之前要先載入的一些類庫
- Prost-startup WebLogic Classpath,是設定在WebLogic類庫載入之後才要開始進行載入的一些類庫
注意是先後順序的不同,根據你的項目需要進行設定之,重新啟動Eclipse後,在java.class.path=的前與後會增加進來你設定的這些Classpath
- 在Runtime配置標籤欄裡,可以設定如下參數
- JRE(選擇用來啟動WebLogic Server所要用到的JDK,這個可以在菜單Window è Preferences è Java è Installed JREs裡進行配置的,上面說過了,要注意根據你的WebLogic的版本選擇其相應支援的JDK方可。
- VM Arauments(設定傳遞給JavaVM的參數,如最大與最小堆棧大小,以什麼模式啟動WebLogic Server,本例我們假設以產品模式啟動)
- JNI Library Path(設定要載入JNI時的搜尋路徑)
- Run Mode(設定以產品模式還是開發模式進行啟動WebLogic Server)
- 菜單 Windows è Show View è Other …
可以看到WebLogic分類下面有WebLogic Servers功能表項目,選擇並開啟它。
這樣可以在這裡進行啟動、停止WebLogic Server等操作。
- 選中WebLogic 下的 Project節點,並進行如下參數的設定
Project added to the end of the classpath,通過Add按鈕,可以選擇你所要載入的項目,這樣所選中的項目裡所有的類庫量也會自動地加進來的,不過它的載入順序是在Classpath的最後面。
啟動WebLogic伺服器
- 在開啟的視圖中,右鍵,選擇Start就可以啟動WebLogic Server了
在控制台會有如下的啟動資訊顯示:
顯示啟動成功。
在這裡也可以進行增加其它WebLogic Server的配置,如下:
修改WebLogic Server的配置
刪除WebLogic Server的配置
也可以查看相應的協助文檔,如下:
開啟WebLogic Plugin的協助文檔進行查閱,可惜沒有看到。
停止WebLogic伺服器
- 在開啟的視圖中,右鍵,選擇Stop就可以停止WebLogic Server了
在控制台會有如下的停止訊息顯示:
部署、重新啟動、停止應用程式
部署應用:只能通過瀏覽器去部署新的應用,沒有找到這裡可以直接進行部署的地方。
重新啟動:假如我們通過瀏覽器或其它控制端部署了一個Web Application上去了。
這時,通過外掛程式停止WebLogic,再啟動它後,雙擊展現Web Appplication Modules,可以在下面看我們部署上去的應用了。不過,而慢進行停止再啟動。
可以直接通過外掛程式提供的重新整理功能就會把部署上去的模組展現出來,如下:
這時,要重新啟動應用程式的話,只要在應用程式名稱上面右鍵,在彈出的菜單中選擇Redeploy即可重新部署應用了,速度很快的。
刪除應用程式的話,只要在應用程式名稱上面右鍵,在彈出的菜單中選擇Undeploy即可刪除應用了,模組名稱立馬消失,速度很快的,要重新部署又得通過瀏覽器或其它控制端來完成了。
總結
此外掛程式的功能給予我們方便地整合Eclipse與WebLogic的開發使用,提高了效率。
Bug一個,大家要注意。
關閉Eclipse之後重新啟動Eclipse後,這時要啟動WebLogic會發現以下錯誤而啟動不了,鬱悶了吧:)
<Critical>
<Security>
<BEA-090402>
<Authentication denied: Boot identity not valid;
The user name and/or password from the boot identity file
(boot.properties) is not valid. The boot identity may have been changed
since the boot identity file was created. Please edit and update
the boot identity file with the proper values of username and password.
The first time the updated boot identity file is used to start the server,
these new values are encrypted.> *************************************************************************** The WebLogic Server did not start up properly. Reason: weblogic.security.SecurityInitializationException:
Authentication denied: Boot identity not valid;
The user name and/or password from the boot identity file (boot.properties) is not valid.
The boot identity may have been changed since the boot identity file was created.
Please edit and update the boot identity
file with the proper values of username and password.
The first time the updated boot identity file is used to start the server,
these new values are encrypted. ***************************************************************************
不過解決的辦法也簡單,看到下圖的資訊了吧,這個外掛程式在對使用者進行存取的時候出了問題,導致錯誤的,你每次重新啟動Eclipse後,要修改一下WebLogic的設定檔,把裡面的使用者名稱用密碼再儲存後才行的。
後記
文章寫完後,我又修複了上述的BUG,這裡重點再闡述一下解決過程:解壓、反編譯、替換加密方法、編譯、重打包、關閉Eclipse、覆蓋、重啟:)
1、WebLogic Plugin 2.0.0的設定檔儲存在
%ECLIPSE_HOME%\workspace\.metadata\.plugins\com.bea.weblogic.eclipse\目錄下
dialog_settings.xml是儲存配置對話方塊的大小之類的檔案
servers.xml是儲存伺服器配置資訊的檔案
解壓出weblogic-eclipse.jar裡的所有檔案
反編譯com\bea\weblogic\eclipse\utils\XMLUtil.class得到XMLUtil.java
在裡面增加兩個函數
/** * 將 source 進行 BASE64 編碼 * * @param source * @return */ public static String buildBASE64(String source) { if(source == null) { return null; } return (new sun.misc.BASE64Encoder()).encode(source.getBytes()); } /** * 將 BASE64 編碼的字串 base65code 進行解碼 * * @param base65code * @return */ public static String getFromBASE64(String base65code) { if(base65code == null) { return null; } BASE64Decoder base64decoder = new BASE64Decoder(); try { byte[] b = base64decoder.decodeBuffer(base65code); return new String(b); } catch(Exception e) { e.printStackTrace(); return null; } }
在public IServerInstall[] loadServers(File serversFile)函數裡修改
cServerInstall.setUsername(CryptoUtil.getDefault().decrypt(new String(Base64Util.base64ToByteArray(getNodeValue(cElement))),id)); 為 cServerInstall.setUsername(getFromBASE64(getNodeValue(cElement))); 修改 cServerInstall.setPassword(CryptoUtil.getDefault().decrypt(new String(Base64Util.base64ToByteArray(getNodeValue(cElement))),id)); 為 cServerInstall.setPassword(getFromBASE64(getNodeValue(cElement)));
在public void saveServers(IServerInstall servers[],File serversFile)函數裡修改
org.w3c.dom.Text usernameText = doc.createTextNode(Base64Util.byteArrayToBase64(CryptoUtil.getDefault().encrypt(cServer.getUsername(),cServer.getId()).getBytes())); 為 org.w3c.dom.Text usernameText = doc.createTextNode(buildBASE64(cServer.getUsername())); 修改 org.w3c.dom.Text passwordText = doc.createTextNode(Base64Util.byteArrayToBase64(CryptoUtil.getDefault().encrypt(cServer.getPassword(),cServer.getId()).getBytes())); 為 org.w3c.dom.Text passwordText = doc.createTextNode(buildBASE64(cServer.getPassword()));
編譯這個XMLUtil.java得到XMLUtil.class,把XMLUtil.class打回weblogic-eclipse.jar包裡
關閉Eclipse
把 weblogic-eclipse.jar 覆蓋掉原來外掛程式目錄裡的檔案
重新啟動Eclipse
Enjoy...