java學習:eclipse + Weblogic 12c + svn 整合式開發環境搭建

來源:互聯網
上載者:User

網上有很多文章都說eclipse要安裝額外的外掛程式才能支援weblogic,可能以前需要這樣,但自從bea的weblogic被oracle收購後,現在已經很簡單了

一、先下載 Free Oracle WebLogic Server 12c (12.1.1) Zip Distribution and Installers for Developers

http://www.oracle.com/technetwork/middleware/fusion-middleware/downloads/index.html

這個安裝以後,就已經內建了Eclipse(而且已經整合了weblogic外掛程式),安裝完成後,可以通過 “開始菜單->所有程式->Oracle Enterprise Pack for Eclipse->Oracle Enterprise Pack for Eclipse” 啟動

二、64位機器上,Eclipse啟用失敗的問題

出錯時,提示資訊如下:

Java was started but returned exit code=1

...

網上找了很多文章,都說是修改eclipse.ini配置或重新安裝32位JVM,但我試了貌似都無效,最後發現還是得在環境變數裡修改:

2.1 添加系統內容變數JAVA_HOME,其值為 c:\bea\jdk160_29\  (此處修改為自己機器上的jdk實際物理目錄)

2.2 PATH環境變數添加 c:\bea\jdk160_29\bin\ (此處修改為自己機器上的jdk實際物理目錄)

2.3 添加系統內容變數 CLASSPATH,其值為 .;C:\bea\jdk160_29\lib\tools.jar;C:\bea\jdk160_29\lib\dt.jar;(此處根據實際情況修改)

檢測這些變數是否正確的最簡單辦法:在命令列cmd視窗裡,輸入javac -version,要是能出java版本號碼就說明ok

三、在Eclipse裡設定Weblogic Server

找到Servers面板,點擊"New Server wizard"

選擇 對應的weblogic版本

指定weblogic的domain目錄

如果你已經建立了dynamic web project,還可以把指定的項目應用到該weblogic伺服器

(當然也可以直接點擊Finish)完成,弄完後,就能看到當前伺服器的狀態(如果沒有啟用,就會顯示Stopped)

可以右鍵->Start,就可以直接在Eclipse下啟用WebLogic了 

四、svn外掛程式的安裝
啟用Eclipse,在Help菜單下,找到 Install New Software...,在work with 裡輸入  http://subclipse.tigris.org/update

把Subclipse Plugin、Subversion Book 這二個都勾上,然後一路Next就OK了,安裝過程中,可能會彈一個警告框,不用理會,全部選擇繼續安裝

五、測試svn

5.1 先建立一個Dynamic Web Project

注意:Traget runtime以及Configuration 二項都要選擇對應的Weblogic(後面還會利用這個項目,測試部署weblogic)

5.2、簽入代碼(check in)

在Project Explorer 中,選中剛建立的myWeb,然後右鍵->Team->Share Projet 就能簽入代碼了(當然要填寫一些基本資料,比如svn資產庫路徑,使用者名稱、密碼等)

5.3、簽出代碼(check out)

建立項目時,也可以選擇直接從svn伺服器上check out,方法:New->Other

六、測試 WebLogic

6.1、項目運行時的自動部署

在剛建立的myWeb裡建立二個jsp檔案:home.jsp和about.jsp

啟動後,eclipse會自動start weblogic server,同時會自動部署myWeb應用

6.2、網站的預設頁設定

剛才的樣本,我們必須在地址欄明確指定要訪問的頁面,即http://localhost:7001/myWeb/home.jsp 才以正確訪問,如果把home.jsp去掉,直接用 http://localhost:7001/myWeb來訪問,就會出錯:

在iis中,可以通過佈建網站的預設文件來實現這個需求。在weblogic中,就得通過其它方式來處理,修改web.xml檔案:

把web.xml中,webcome-file-list中的第一個welcome-file節點值設定成home.jsp,這樣就行了。

6.3、純手動部署應用(war包)

開發時,我們可以藉助eclipse自動實現weblogic部署,但是真正上線時,通常都是通過war包來手動部署的。

6.3.1、 通過eclipse匯出war包

在項目myWeb上右擊->export->war file,這樣就得到了一個war檔案:myWeb.war ,它本質上就是一個標準的壓縮檔,可以用winrar,7-zip之類的壓縮軟體開啟。

6.3.2、登入weblogic手動部署war包

登入http://localhost:7001/console 控制台(具體路徑大家根據weblogic的安裝情況,自行調整)

找到"部署"介面,如果是新安裝的weblogic,部署列表裡應該是空的(另外如果剛才在eclipse環境中,運行過項目myWeb,部署列表中可能會有一個自動部署的myWeb,建議大家先在eclipse環境中的server面板中,把自動部署的myWeb給delete掉,否則後面再手動部署一個同名應用時會失敗)

找到剛才匯出的myWeb.war包,然後猛擊“下一步”,一路向西,直至完成

部署完成後,應用會自動運行

此時,在瀏覽器裡輸入 http://localhost:7001/myWeb應該就能看到home.jsp的內容了

6.3.2、網域名稱綁定

每次通過http://localhost:7001/myWeb來訪問實在太煩人,如果能象訪問其它網站那樣,直接用類似 http://yjmyzz.com/ 來訪問就fashion多了。iis裡,通過設定網站的主機頭,可以輕鬆搞定,weblogic裡也有類似的功能,那就是"虛擬機器主機"

6.3.2.1、 建立一個虛擬機器主機

找到虛擬機器主機面板

建立一個新虛擬機器主機,命名為"VirturlHost-myWeb"

建立完成後,雙擊"VirtualHos-myWeb"

修改"網路存取點名稱",輸入要綁定的網域名稱: www.yjmyzz.com

 

6.3.2.2、 將myWeb應用掛到虛擬機器主機上

在部署面板,雙擊myWeb修改目標屬性,將虛擬機器主機Virtualhost-myWeb前的勾選中

6.3.2.3、 修改7001連接埠為80

在伺服器面板,雙擊"AdminServer"把監聽連接埠從7001,改成80

6.3.2.4、 修改根路徑myWeb為/ 

以部署面板,雙擊myWeb,修改上下文根,從"myWeb"改成"/"

弄完之後,應該就能直接用http://localhost/ 來訪問myWeb了

剛才我們輸入的網域名稱www.yjmyzz.com是隨便想的,實際上並不存在,為了驗證剛才這一系列修改是否有效,可以先修改本機hosts檔案,加入一行

127.0.0.1 www.yjmyzz.com

這樣就能本機類比網域名稱解析(註:可在命令列視窗輸入ping www.yjmyzz.com來驗證,正常情況下,應該能ping通過,而且返回的ip就是127.0.0.1),直接在地址欄輸入 http://www.yjmyzz.com/ 應該就大功告成了(如果瀏覽器設定了代理,建議先去掉代理,或添加例外)

6.3.3、建立weblogic web service

建立一個WebLogic Web Service Project 命名為myWebService

 

6.3.3.1、建立用於傳輸的實體類PersonEntity

package model;import java.util.*;public class PersonEntity {private String _name;private int _age;private Date _birthday;private float _salary;/** * @return the _name */public String getName() {return _name;}/** * @param _name the _name to set */public void setName(String _name) {this._name = _name;}/** * @return the _age */public int getAge() {return _age;}/** * @param _age the _age to set */public void setAge(int _age) {this._age = _age;}/** * @return the _birthday */public Date getBirthday() {return _birthday;}/** * @param _birthday the _birthday to set */public void setBirthday(Date _birthday) {this._birthday = _birthday;}/** * @return the _salary */public float getSalary() {return _salary;}/** * @param _salary the _salary to set */public void setSalary(float _salary) {this._salary = _salary;}}

  

6.3.3.2、建立web service“介面契約”及“實現”

介面定義

package contract;import javax.jws.WebMethod;import javax.jws.WebService;import model.*;@WebService(name = "Person", targetNamespace = "http://jmyang.com/")public interface Person {@WebMethod(operationName = "getPersonByName")public PersonEntity getPersonByName(String name);}

介面實現

package contract; import javax.jws.*;import model.*; @WebService(portName = "PersonPort", serviceName = "PersonService", targetNamespace = "http://jmyang.com/", endpointInterface = "contract.Person")public class PersonImpl implements Person {     public PersonEntity getPersonByName(String name) {                 PersonEntity p = new PersonEntity();        p.setName(name);        if (name.equals("jmyang")){            p.setAge(30);            p.setSalary(1000);        }        else if(name.equals("zhangsan")){            p.setAge(20);            p.setSalary(1500);        }        else{            p.setAge(25);            p.setSalary(1200);        }                        return p;     }}

6.3.3.3、部署 及 WSDL測試

 

6.3.3、eclipse 環境中調用weblogic web service

6.3.3.1、建立用戶端調jar包

File->New 建立一個Weblogic Web Service Client

WSDL選擇Remote,並輸入WSDL的遠程地址

指定產生用戶端jar的路徑(其實用預設的就行了)

指定“運行時從遠程擷取wsdl”

完成後,eclipse就會產生一個jar包

6.3.3.2、利用用戶端jar包,調用web service

隨便建立一個java project,命名為wsCallDemo,在project屬性時,把剛才產生的jar包添加進來

在eclipse裡,雙擊PersonService.jar包,可以看到裡面有很多自動產生的類

寫幾行代碼測試一下:

package test;import com.jmyang.*;public class CallWsSample {/** * @param args */public static void main(String[] args) {PersonService service = new PersonService();Person serviceInterface = service.getPort(Person.class);//取得服務介面PersonEntity jimmy= serviceInterface.getPersonByName("jmyang");//調用服務System.out.println(jimmy.getName() + "/" + jimmy.getAge() + "/" + jimmy.getSalary());//輸出結果PersonEntity zhangsan= serviceInterface.getPersonByName("zhangsan");//調用服務System.out.println(zhangsan.getName() + "/" + zhangsan.getAge() + "/" + zhangsan.getSalary());//輸出結果、}}

 

註:以上方法,對於調用.net wcf服務同樣適用。需要特別注意的是:對於String類型的比較,在java web service中,一定要用 equals來判斷二個字串(內容)是否相等,如果用==號,永遠返回false,但是在常規java project中,==號與equals結果卻相同(初次接觸java web service,暫時尚未完全參透,看了一些相關的文章,==號是判斷二個字串是否引用相同,而equals是判斷二個字串是否內容相同,在常規java project中測試時,String未被序列化傳輸,jvm內部二個字串的引用、內容都是相同的,但在web service中使用時,字串會被序列化傳輸,還原序列化時,相當於建立了一個全新的字串執行個體對象,導致引用不同)

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.