java學習:eclipse + Weblogic 12c + svn 集成開發環境搭建


網上有很多文章都說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環境變量最后添加 ;%JAVA_HOME%\bin\

2.3 添加系統環境變量 CLASSPATH,其值為  .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\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中使用時,字符串會被序列化傳輸,反序列化時,相當於創建了一個全新的字符串實例對象,導致引用不同)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM