WAS6.1 +HIBERNATE+SPRING +MYECLIPSE5.1.1 整合

概述

Hibernate 是傳統(tǒng)的 Java 對象 (POJO) 的開放源代碼持久性框架,它通過 XML 配置文件提供 POJO 到關(guān)系數(shù)據(jù)庫表的與對象相關(guān)的映射。 Hibernate 框架是應(yīng)用程序調(diào)用的、用于數(shù)據(jù)持久性的數(shù)據(jù)訪問抽象層。此外, Hibernate 還提供了從 Java 類到數(shù)據(jù)庫表(以及從 Java 數(shù)據(jù)類型到 SQL 數(shù)據(jù)類型)的映射以及數(shù)據(jù)查詢和檢索功能。 Hibernate 生成必需的 SQL 調(diào)用,還負(fù)責(zé)結(jié)果集處理和對象轉(zhuǎn)換。

Hibernate Gavin King Hibernate 項(xiàng)目的奠基人)領(lǐng)導(dǎo)的軟件開發(fā)團(tuán)隊(duì)開發(fā),目的是解決 EJB 2.x 實(shí)體 EJB 中存在的諸多缺陷。 Hibernate JBoss Group 緊密關(guān)聯(lián),這是由于 JBoss 雇傭了大量的一流 Hibernate 開發(fā)人員的結(jié)果。最近,在 Java Community Process (JCP) 中的持久性框架的發(fā)展中已涉及 Hibernate ,并且 Hibernate 的許多概念已合并到 Java Persistence API (JPA) 規(guī)范中。最新版本的 Hibernate 將發(fā)展為符合 JPA 規(guī)范。

?? 即使擁有良好的工具和優(yōu)秀技術(shù),應(yīng)用軟件開發(fā)也是困難重重。應(yīng)用開發(fā)往往牽扯到方方面面,每件事情都難以控制,而且,開發(fā)周期也很難把握(除非它的確是一個(gè)重量級的復(fù)雜應(yīng)用,倒也有情可原)。 Spring 提供了一種輕量級的解決方案,用于建立“快裝式企業(yè)應(yīng)用”。在此基礎(chǔ)上, Spring 還提供了包括聲明式事務(wù)管理, RMI Web Services 遠(yuǎn)程訪問業(yè)務(wù)邏輯,以及可以多種方法進(jìn)行的持久化數(shù)據(jù)庫地解決方案。另外, Spring 還有一個(gè)全功能的 MVC 框架,并能透明的把 AOP 集成到你的軟件中去。你可以把 Spring 當(dāng)作一個(gè)潛在的一站式企業(yè)應(yīng)用。或者,把 Spring 看作一個(gè)標(biāo)準(zhǔn)開發(fā)組件,根據(jù)自己的需要,只取用它的部分組件使用而無需涉及其他。例如,你可以利用控制反轉(zhuǎn)容器在前臺的展現(xiàn)層使用 Struts ,還可以只使用 Hibernate 集成編碼 或是 JDBC 抽象層 去處理數(shù)據(jù)存儲。 Spring 被設(shè)計(jì)成(并將繼續(xù)保持)無侵入性的方式,意味著應(yīng)用幾乎不需要對框架進(jìn)行依賴(或根據(jù)實(shí)際使用的范圍,將依賴做到最小)。

?????? 目前 12580 系統(tǒng)正是基于 Spring Hibernate 兩個(gè)開放源代碼項(xiàng)目集成而成的開發(fā)框架,采用的 J2EE 規(guī)范包括了 EJB Servlet Jsp MVC 等,運(yùn)行的應(yīng)用服務(wù)器是 BEA Weblogic81 。隨著 12580 信息資訊互動中心業(yè)務(wù)應(yīng)用的不斷發(fā)展,業(yè)務(wù)不斷累加,在這種情況下,采用原有的開發(fā)框架( Jsp+Servlet+Hibernate+EJB )完成新業(yè)務(wù)的開發(fā),導(dǎo)致了整個(gè)系統(tǒng)的代碼不斷累加,維護(hù)性、運(yùn)行效率都非常的差,而且對于新來的員工想快速利用原有的開發(fā)框架上手非常的難,客戶對系統(tǒng)的性能以及業(yè)務(wù)快速開發(fā)要求越來越高,因此 , 為了解決這個(gè)問題,利用了開源社區(qū)比較成熟的技術(shù)對原有的開發(fā)框架進(jìn)行了無縫移植,即將原有的開發(fā)技術(shù)框架( Jsp+Servlet+Hibernate+EJB )移植到 Jsp+Servlet+Spring Spring+WebWork2 上,開發(fā)環(huán)境由原來的 WSAD 移植到基于 Eclipse SDK J2EE 開發(fā)工具 Myeclipse 。主要是為了減少工作量,減少企業(yè)應(yīng)用對應(yīng)用服務(wù)器的依賴,易于移植到不同的平臺中,同時(shí)新業(yè)務(wù)的開發(fā)采用新的技術(shù)框架,極大的提高了開發(fā)進(jìn)度,為 12580 系統(tǒng)快速推出新業(yè)務(wù)占領(lǐng)信息市場提供了技術(shù)保障。

?

?

環(huán)境要求

1.? Application Server IBM WebSphere Application Server V6.1Base_Windows32bit

2.? JDK \IBM\WebSphere6.1\AppServer\java

3.? IDE Eclipse3.2.2+MyEclipse5.1.1

4.? Spring spring-framework-2.0.3

5.? Hibernate hibernate-3.2.2.ga

6.? CVS CVS for NT (CVSNT) 2.0

7.? DB oracle92

可到 \\10.243.194.69\Temp\ 系統(tǒng)移植所需軟件下載以上軟件。

WAS V6.1 安裝以及基本配置

安裝

安裝過程比較簡單,按照安裝提示一路操作即可,在此不一一介紹,需要提醒的是要記得安裝過程中所設(shè)置的用戶名、密碼,該帳號信息是 WAS 管理控制臺的登錄帳號。

基本配置

下面以圖文并茂的方式簡單介紹 WAS 的基本配置,包括常用的環(huán)境變量、共享庫、 JDBC 提供程序、數(shù)據(jù)源的配置等。

啟動服務(wù)器

啟動 WAS ,如下圖:

選擇啟動服務(wù)器,看到以下內(nèi)容,表示服務(wù)器啟動正常,如下圖:

進(jìn)入管理控制臺

WAS 的管理控制臺端口是 9060 ,具體 URL http://localhost:9060/ibm/console ,也可以通過以下方式登錄。

選擇管理控制臺即可,在打開的 IE 窗口輸入管理員帳號、密碼,進(jìn)入管理控制頁面,如下圖:

配置環(huán)境

環(huán)境配置主要是配置企業(yè)應(yīng)用系統(tǒng)所用到的依賴 jar 包、路徑變量等。常用到的配置有 WebSphere 變量、共享庫。

1.? WebSphere 變量

使用此頁面來定義替換變量。這些變量指定某些系統(tǒng)定義的值(例如,文件系統(tǒng)根目錄)的間接程度。變量有作用域級別,即服務(wù)器、節(jié)點(diǎn)、集群或單元。某個(gè)作用域的值可與其他級別的值不同。當(dāng)變量具有沖突的作用域值時(shí),粒度較細(xì)的值會覆蓋作用域級別高一些的值。因此,服務(wù)器變量覆蓋節(jié)點(diǎn)變量,節(jié)點(diǎn)變量覆蓋集群變量,集群變量覆蓋單元變量。具體操作選擇左邊菜單:環(huán)境-》 WebSphere 變量,如下圖:

選擇新建操作,切換到配置頁面,輸入名稱、值,如下圖:

確定之后,系統(tǒng)返回提示是否保存,選擇保存,如下圖:

保存后則配置的變量生效,可以在其他配置中使用定義好的變量名稱代替具體的文件路徑。

按同樣的方法設(shè)置其他需要用到企業(yè)應(yīng)用程序依賴 JAR 的本地文件路徑變量配置。如下圖:

2.? 共享庫配置

使用此頁面來定義可由已部署應(yīng)用程序使用的容器范圍內(nèi)共享庫。具體操作選擇左邊菜單:環(huán)境-》共享庫,如下圖:

選擇新建操作,切換到共享庫配置頁面,輸入名稱、類路徑或本機(jī)路徑,其中設(shè)置類路徑的話使用到前面定義的路徑變量,如果設(shè)置本機(jī)路徑,則可以具體指定本地文件系統(tǒng)所在目錄的 jar 文件。輸入完畢點(diǎn)確定即可。如下圖:

系統(tǒng)提示是否保存,如下圖:

保存后,返回共享庫配置列表,配置好的共享庫,可以在以后的應(yīng)用系統(tǒng)部署中使用到。如下圖:

JDBC 配置

該配置主要是配置企業(yè)應(yīng)用系統(tǒng)所引用到 JNDI 數(shù)據(jù)源配置。常用到的配置有 JDBC 提供程序、數(shù)據(jù)源。

1.? JDBC 提供程序

使用此頁面來編輯 JDBC 提供程序的屬性。 JDBC 提供程序?qū)ο蟀ㄌ囟ǖ?/span> JDBC 驅(qū)動程序?qū)崿F(xiàn)類,以便訪問環(huán)境中的特定供應(yīng)商數(shù)據(jù)庫。具體操作:選擇左邊菜單-》 JDBC -》 JDBC 提供程序,如下圖:

選擇新建操作,系統(tǒng)切換到配置頁面,輸入名稱、類路徑或本機(jī)庫路徑、實(shí)現(xiàn)類名,以新建 ORACLE 提供 JDBC 程序?yàn)槔Q為: Oracle JDBC Driver 、類路徑為: ${oracle_jdbc_driver_path}/ojdbc14.jar 或本機(jī)路徑為: C:\oracle\ora92\jdbc\lib\ojdbc14.jar 、實(shí)現(xiàn)類名為: oracle.jdbc.pool.OracleConnectionPoolDataSource ,其中 ${oracle_jdbc_driver_path} 為前面設(shè)置的 websphere 變量名稱,如下圖:

點(diǎn)確定,系統(tǒng)提示保存頁面,如下圖:

點(diǎn)保存后,系統(tǒng)返回 JDBC 提供程序列表,如下圖:

2.? 數(shù)據(jù)源配置

使用此頁面來編輯與所選 JDBC 提供程序相關(guān)聯(lián)的數(shù)據(jù)源設(shè)置。數(shù)據(jù)源對象為應(yīng)用程序提供用于訪問數(shù)據(jù)庫的連接。具體操作:選擇左邊菜單-》資源-》 JDBC -》數(shù)據(jù)源,如下圖:

選擇新建,系統(tǒng)切換到數(shù)據(jù)源配置頁面。

第一步:輸入數(shù)據(jù)源名稱: oracle74 JNDI 名稱: jdbc/oracle74 ,點(diǎn)下一步,如下圖:

第二步:選擇 JDBC 提供程序:選擇現(xiàn)有的 JDBC 提供程序,從下拉列表中選擇 Oracle JDBC Driver ,點(diǎn)下一步,如下圖:

第三步:輸入數(shù)據(jù)源的特定于數(shù)據(jù)庫的屬性: URL 輸入: jdbc:oracle:thin:@10.243.194.73:1521:trustel ,點(diǎn)下一步,如下圖:

第四步:總結(jié)以上配置信息,點(diǎn)完成,如下圖:

點(diǎn)完成按鈕后,系統(tǒng)提示是否需要保存,如下圖:

點(diǎn)保存后,系統(tǒng)返回?cái)?shù)據(jù)源列表,如下圖:

最后一步:定制數(shù)據(jù)源屬性,這部分比較關(guān)鍵,是初學(xué)者比較困惑的地方。我們看到,界面上并沒有輸入用戶名、口令的地方,而沒有用戶名稱、口令是無法連接數(shù)據(jù)庫的,為了成功連接數(shù)據(jù)庫,需要我們手工定制數(shù)據(jù)源的屬性。具體操作如下:

在數(shù)據(jù)源列表中,點(diǎn)擊選擇對應(yīng)的數(shù)據(jù)源配置信息,系統(tǒng)切換到該配置源信息的頁面,如下圖:

點(diǎn)定制屬性,系統(tǒng)切換到屬性定制列表頁面,具體操作主要分幾步:

1.? 選擇 driverType ,值輸入 oracle.jdbc.driver.OracleDriver 如下圖:

確定后保存即可。

2.? 同樣得方法設(shè)置 databasename 的值 trustel servername 的值 10.243.194.74

3.? 其他值采用默認(rèn)值。

4.? 設(shè)置 user ,點(diǎn)新建按鈕,系統(tǒng)切換到常規(guī)屬性定制頁面,名稱輸入 user ,值輸入 gmccadmin ,如下圖:

點(diǎn)確定之后保存。

5.? 同樣得方法設(shè)置 password 屬性。設(shè)置完畢之后,我們看到,“定制屬性”中多了兩個(gè)我們自定義的屬性 user password

返回?cái)?shù)據(jù)源設(shè)置頁面,點(diǎn)測試連接,提示連接成功,如下圖:

?

WAS V61 中部署基于 Spring 的企業(yè) /WEB 應(yīng)用

Spring 與底層 J2EE 應(yīng)用服務(wù)器還是存在一些需要結(jié)合的地方,這里通過圖文并茂的方式給出 WAS 中的一些結(jié)合點(diǎn),包括如何使用 WAS 的數(shù)據(jù)源、 JTA 事務(wù)管理、加載 Spring jar 包、部署基于 Spring web 應(yīng)用。

使用 WAS 數(shù)據(jù)源

Java 應(yīng)用程序中,數(shù)據(jù)庫的連接一般有兩種方式來得到。一種是通過 java.sql.DriverManager 的方式來得到數(shù)據(jù)庫連接。這種方式 不依賴于應(yīng)用服務(wù)的支持,但是也不提供數(shù)據(jù)庫連接池的功能。另外一種方式是通過 javax.sql.DataSource 的方式來得到數(shù)據(jù)庫連接。在傳統(tǒng) 基于 J2EE 的應(yīng)用需要通過 JNDI 來得到數(shù)據(jù)源( javax.sql.DataSource )對象,然后再通過數(shù)據(jù)源來得到相應(yīng)的數(shù)據(jù)庫連接。常見的應(yīng) 用服務(wù)器都支持這種方式,且一般都提供了數(shù)據(jù)庫連接池的支持。雖然說我們一般推薦使用數(shù)據(jù)庫連接池,但是也有一些時(shí)候我們需要脫離開應(yīng)用服務(wù)器的環(huán)境使用 數(shù)據(jù)庫(比如單元測試,比如應(yīng)用移植等)。然而應(yīng)用程序使用這兩種方式的時(shí)候代碼是不一樣的,因此只能通過代碼來應(yīng)變。 Spring 提供了一個(gè)統(tǒng)一使用數(shù) 據(jù)源的解決方案,然后通過控制反轉(zhuǎn)的機(jī)制用外部配置文件來指定使用的數(shù)據(jù)源。這樣一方面可以統(tǒng)一這兩種得到數(shù)據(jù)庫連接的方式,另一方面也不需要像通常的 J2EE 應(yīng)用通過繁瑣的 JNDI 代碼來得到數(shù)據(jù)源。這樣應(yīng)用程序也就不需要知道使用的何種數(shù)據(jù)源。

 ( 1 Spring 提供了一個(gè) DriverManagerDataSource 類來統(tǒng)一第一種方式的數(shù)據(jù)源獲取。如果使用 WAS 中的 Cloudscape 數(shù)據(jù)庫,用外部配置文件可配置如下:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName">

<value>oracle.jdbc.driver.OracleDriver</value>

</property>

<property name="url">

<value>jdbc:oracle:thin:@10.243.194.73:1521:trustel </value>

</property>

</bean>

?  ( 2 Spring 提供了 JndiObjectFactoryBean 類來支持第二種方式的數(shù)據(jù)源獲取。對于部署在 WAS 上的 Web 應(yīng)用,在生產(chǎn)環(huán)境中推薦使用 WAS 實(shí)現(xiàn)的數(shù)據(jù)庫連接池。一方面是因?yàn)檫B接池實(shí)現(xiàn)地比較完善。另一方面,使用 WAS 提供的 數(shù)據(jù)庫連接池可以很完善地支持 JTA 事務(wù)。在 12580 系統(tǒng)中,我們推薦使用這種方式連接數(shù)據(jù)源,如果使用環(huán)境發(fā)生變化,那么只需要修改 Spring 的配置文件即可。假設(shè) WAS 中已經(jīng)配置好的數(shù)據(jù)源名稱為 jdbc /oracle ,那么我們?nèi)绾芜B接到 WAS 定義好的數(shù)據(jù)源呢?由于 Spring 無法直接從 JndiObjectFactoryBean 類獲取到 WAS 配置的數(shù)據(jù)源,我們只能先通過 WEB 應(yīng)用利用目標(biāo)資源 JNDI 名稱引用 WAS 的數(shù)據(jù)源,然后 Spring 再通過 WEB 應(yīng)用獲取到 WAS 的數(shù)據(jù)源,從而實(shí)現(xiàn)了數(shù)據(jù)源的獲取。具體配置片斷如下:

web 應(yīng)用的 web.xml 中配置如下:

?????? <resource-ref>

????????????? <res-ref-name>jdbc/oracle</res-ref-name>

????????????? <res-type>javax.sql.DataSource</res-type>

????????????? <res-auth>Container</res-auth>

?????? </resource-ref>

?????? spring 的配置文件 applicationContext.xml 中配置如下:

??? < bean id = "dataSource"

?????? class = "org.springframework.jndi.JndiObjectFactoryBean" >

?????? < property name = "jndiName" value = "java:comp/env/jdbc/oracle" />

?????? < property name = "lookupOnStartup" value = "false" />

?????? < property name = "cache" value = "true" />

?????? < property name = "proxyInterface" value = "javax.sql.DataSource" />

??? </ bean >

使用 WAS JTA

   Web 應(yīng)用程序在使用事務(wù)的時(shí)候常常會涉 及一個(gè)事務(wù)類型的選擇。是選擇像 JDBC 事務(wù)這樣的本地事務(wù)呢還是使用 JTA 支持的全局事務(wù)。這個(gè)與應(yīng)用程序需要涉及到的事務(wù)管理器類型和個(gè)數(shù)密切相關(guān)。 Spring 本身不支持分布式事務(wù),因此分布式事務(wù)需要底層的 JTA 。但是 Spring 提供了事務(wù)的抽象,即底層真正事務(wù)實(shí)現(xiàn)可以切換而不影響應(yīng)用程序代 碼。這樣應(yīng)用程序可以依賴于底層 WAS ,也可以輕易地脫離開應(yīng)用服務(wù)器的環(huán)境。這一點(diǎn)與前面數(shù)據(jù)源的抽象非常類似。因此在 12580 系統(tǒng)中也建議使用 WAS JTA 事務(wù)管理。

   WAS 本身對于事務(wù)劃分有兩種支持方式,一種是聲明式的,當(dāng)然這種管理方式需要 EJB 容器的支持,即所謂的容器管理事務(wù)( CMT )。另外一種方式是編程式的,通過程序代碼 來直接使用 JTA 編程接口。 Spring 對于事務(wù)的劃分也可以分為聲明式和編程式兩種方式。對于 Spring 編程式的事務(wù)劃分方式,總體上可以分為兩大類。一類是通過直接使用實(shí)現(xiàn) PlatformTransactionManager 接口的類。另一類是通過使用 TransactionTemplate 模板類,模板類的使用可以簡化事務(wù)控制代碼。 Spring 對于聲明式事務(wù)劃分的支持實(shí)際上是利用了它的 AOP 機(jī)制。相對于編程式事務(wù)劃分,這種基于 AOP 的方式比較靈活,而且對代碼的侵入性幾乎為零。因此,如果沒有特殊需要推薦使用這種事務(wù)劃分方式。基于 AOP 的常用事務(wù)劃分方式可以使用 ProxyFactoryBean TransactionInterceptor 方式,或者使用 TransactionPorxyFactoryBean 的方式。前一種方式相對比較靈活,而后一種則對使用相對比較簡單。

  無論是哪一種事務(wù)劃分方式,底層都需要一個(gè)事務(wù)管理機(jī)制作為支撐。如果是單一的事務(wù)資源管理器,那么根據(jù)所使用的后臺事務(wù)管理資源不同的類型,可以選擇的 PlatformTransactionManager 實(shí)現(xiàn)有 DataSourceTransactionManager HibernateTransactionManager JdoTransactionManager PersistenceBrokerTransactionManager ,和 JmsTransactionManager 等。無論是單個(gè)還是多個(gè)事務(wù)資源管理器,都可以使用 JtaTransactionManager 類。如果使用 JtaTransactionManager ,那么所有事務(wù)管理實(shí)際都會委 托給底層應(yīng)用服務(wù)器的 JTA 實(shí)現(xiàn)。

   使用 WAS JTA 支持,我們需要在 Spring 的配置文件 applicationContext.xml 配置如下:

<bean id="wasTxMgr"class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean" />

<bean id="transactionManager"class="org.springframework.transaction.jta.JtaTransactionManager><property name="transactionManager"><ref local="wasTxMgr" /></property></bean>

   通過采用 Spring 的事務(wù)支持,底層事務(wù)采用何種方式的決定就不必在一開始開發(fā)就做出決定。因?yàn)槲覀兡軌蛲ㄟ^ Spring 的外部配置文件來進(jìn)行切換真 正的事務(wù)支持。不過,雖然也有第三方的 JTA 支持,但是 WAS 能夠提供非常穩(wěn)定的 XA 支持,因此推薦使用 WAS JTA ,尤其是當(dāng)應(yīng)用涉及到分布事務(wù)處理 的時(shí)候。這樣無論應(yīng)用涉及幾個(gè)事務(wù)資源都可以統(tǒng)一解決。

如何加載 Spring JAR

Spring 架的核心 JAR 包是 spring.jar ,但是根據(jù)實(shí)際使用情況需要一些擴(kuò)展 JAR 包和依賴 JAR 包。那在 WAS 中如何處理這些 JAR 包文件呢?在 Web 應(yīng)用中一個(gè)簡單而直接的處理方式放是把這些使用到的 JAR 文件都拷貝到對應(yīng)的 WEB-INF/lib 目錄下面。這種方法雖然簡單,但是當(dāng)有多個(gè) Spring 應(yīng)用程序的時(shí)候這種處理方式就需要在每個(gè)應(yīng)用的 WEB-INF/lib 目錄下都拷貝一份相同的 JAR 文件。這里可以通過共享庫的方式來統(tǒng)一解 決類庫共享這個(gè)問題。

  共享庫就是 WAS 專門用來解決不同應(yīng)用程序之間共享 JAR 或本地庫文件的一種機(jī)制。共享庫由一個(gè)名字、一個(gè) JAVA 類路徑和 / 或一個(gè)裝載 JNI 庫本地庫路徑組成。它可以分別在單元,節(jié)點(diǎn)和服務(wù)器級別定義。但是共享庫定義了并不意味著它會被裝載,只有當(dāng)這個(gè)共享 庫與某個(gè)應(yīng)用程序或應(yīng)用服務(wù)器關(guān)聯(lián)之后,它才會被加載。如果一個(gè)共享庫與一個(gè)應(yīng)用程序關(guān)聯(lián),那么這個(gè)共享庫由應(yīng)用程序類加載器加載。如果一個(gè)共享庫與應(yīng)用 服務(wù)器關(guān)聯(lián),那么這個(gè)共享庫就需要一個(gè)專門定義的類加載器來加載。這個(gè)類加載器需要用戶自己定義。其操作如下:選應(yīng)用服務(wù)器比如 server1' 類加載器 ' 新建一個(gè)類加載器 ' 加載器與共享庫關(guān)聯(lián)。

  在創(chuàng)建這個(gè)類加載器之前一般都需要預(yù)先定義好共享庫。 根據(jù)上面的介紹可知,通過共享庫解決 Spring 應(yīng)用的 JAR 包共享問題,主要就是兩個(gè)步驟。一是,把 Spring 應(yīng)用中需要共享的 JAR 包定義成為一個(gè) 共享庫。二是,選定相應(yīng)的 WAS 服務(wù)器實(shí)例,把它與上面創(chuàng)建的共享庫關(guān)聯(lián)起來。這樣此 WAS 服務(wù)器實(shí)例上的所有應(yīng)用都能夠使用共享庫中定義的 JAR 包。使 用共享庫這種方式的時(shí)候要注意理解類的裝載次序和方式。如果是這種與 WAS 服務(wù)器實(shí)例關(guān)聯(lián)的共享庫 JAR 包,其類加載器在層次結(jié)構(gòu)上在應(yīng)用程序類加載器上 面,即是它的父加載器。

如何在 WAS 部署基于 Spring WEB 應(yīng)用

要在 WAS 部署基于 Spring Web 應(yīng)用,必須嚴(yán)格按照以上的配置來進(jìn)行,配置完畢之后,必須將 Web 應(yīng)用依賴到的 Jar 包加載到 WAS 的服務(wù)器中,加載 Jar 包的方式有兩種,一種是通過共享庫的方式來加載,一種則是直接將 Web 應(yīng)用所依賴的 jar 包拷貝到 C:\IBM\WebSphere6.1\AppServer\lib\ext 目錄下,同時(shí)導(dǎo)出 WAR 文件。啟動 WAS ,打開管理控制臺,如下圖:

左邊菜單選擇應(yīng)用程序-》安裝新的應(yīng)用程序,在右邊的工作區(qū)頁面中選擇導(dǎo)出的 WAR 文件,輸入上下文根,如下圖:

點(diǎn)下一步,采用默認(rèn)設(shè)置,一直到步驟 3 將資源引用映射至資源時(shí),需要輸入 web 應(yīng)用引用到的 WAS 的資源,如下圖:

點(diǎn)下一步采用默認(rèn)設(shè)置,最后點(diǎn)完成, WAS 開始加載 Web 應(yīng)用,如果加載成功,在提示如下頁面:

?

點(diǎn)保存后,通過左邊菜單應(yīng)用程序-》應(yīng)用程序查看已安裝的 Web 應(yīng)用,發(fā)現(xiàn)是一個(gè)小紅×,這表示尚未啟動該 web 應(yīng)用,如下圖:

勾上該 Web 應(yīng)用,啟動它, WAS 最后提示啟動成功,如下圖:

查看后臺日志,發(fā)現(xiàn)該 web 應(yīng)用中 Spring ContextLoader 初始化 WebApplicationContext 成功,同時(shí)加載了 applicationContext.xml 配置的所有 bean 資源、 O/R 映射、數(shù)據(jù)源連接等,啟動成功的日志片斷如下:

看到日志無日常,則表示 web 啟動成功,可以通過網(wǎng)頁訪問 web 應(yīng)用,如下圖:

MyEclipse5 下配置 WAS V6.1

MyEclipse 為我們提供了在超過 20 幾種的不同應(yīng)用服務(wù)器上無縫部署、執(zhí)行、測試 MyEclipse J2EE 應(yīng)用的便利,然而,在 MyEclipse 上正確配置 WebSphere 6.1 應(yīng)用服務(wù)器需要比配置其他應(yīng)用服務(wù)器花費(fèi)更多的時(shí)間,本文檔以圖文并茂的方式一步一步教你配置一個(gè)基于 MyEclipse WebSphere 服務(wù)器實(shí)例,同時(shí)將你開發(fā)的 web 應(yīng)用通過 MyEclipse 快速的部署到 WAS 中。

通過 MyEclipse 的應(yīng)用服務(wù)器連接器參數(shù)配置,你在 MyEclipse 直接控制本地的 J2EE 服務(wù)器實(shí)例,因此,對于 WASV6.1 來說,你需要重新建一個(gè)基于 MyEclipse 的應(yīng)用服務(wù)器實(shí)例,具體操作如下。

新建 WAS 服務(wù)器實(shí)例

第一步:打開概要管理工具,如下圖:

?

概要文件管理工具啟動后,點(diǎn)下一步,選擇高級概要文件創(chuàng)建,如下圖:

點(diǎn)下一步,采用默認(rèn)設(shè)置直到系統(tǒng)提示輸入概要文件名、概要文件目錄,輸入你喜歡的概要文件名、概要文件目錄,構(gòu)選使用開發(fā)模板創(chuàng)建服務(wù)器,如下圖:

點(diǎn)下一步,輸入你喜歡的節(jié)點(diǎn)名稱,主機(jī)名一般不建議修改。如下圖:

點(diǎn)下一步,輸入你喜歡的管理控制臺帳號、密碼,如下圖:

點(diǎn)下一步,修改 WAS 的端口值,一般默認(rèn)即可,如下圖:

采用建議的端口值之后,點(diǎn)下一步,記住哦,千萬不要作為 window 服務(wù)運(yùn)行,省得無謂耗用自己電腦資源,如下圖:

點(diǎn)一下步,一般不需要創(chuàng)建 web 服務(wù)器創(chuàng)建,沒那個(gè)必要嘛,如下圖:

點(diǎn)下一步,最后點(diǎn)創(chuàng)建 WAS 服務(wù)器用例,等待成功中。

終于看到成功界面了,點(diǎn)完成即可。

修改 WAS 配置

該部分詳細(xì)描述了如何配置一個(gè) WAS 開發(fā)實(shí)例使之能在 MyEclipse 中運(yùn)行、部署、監(jiān)控日志等。

第一步:要想見到控制臺,當(dāng)然要先啟動服務(wù)器。如下圖:

第二步:打開管理控制臺,用管理員帳號登錄,如下圖:

第三步:登錄成功后,需要對 server1 進(jìn)行配置。具體操作如下,左邊菜單-》服務(wù)器-》應(yīng)用服務(wù)器,如下圖:

第四步:現(xiàn)在為了保證 WAS 的輸入日志、錯(cuò)誤提示能在 MyEclipse 中顯示,則需要對 server1 進(jìn)行修改配置。如下圖:

點(diǎn)記錄和跟蹤-》 JVM 日志,如下圖:

將應(yīng)用程序服務(wù)器 > server1 > 記錄和跟蹤 > JVM 日志中的 System.out 以及 System.err 文件名修改為 console ,如下圖:

點(diǎn)確定之后,保存即可,注銷退出,停掉 WAS 服務(wù)器。

MyEclipse 中配置 WAS

在配置 MyEclipse 之前,你需要確定新建 WAS 服務(wù)器實(shí)例之后的節(jié)點(diǎn)名稱、單元名稱,可以查看 WAS 目錄如下:

其中節(jié)點(diǎn)名為: gd12580 ,單元名稱為 lidNode03Cell ,在 myeclipse 中需要正確配置對應(yīng)的名稱。具體配置如下:

第一步:啟動 myeclipse ,在 MyEclipse 運(yùn)行 WAS 需要配置 IBM JDK 。找到 Window > Preferences >Java>Installed JREs ,如下圖:

點(diǎn) add ,輸入 JRE name 、指向本地 websphere java home ,確定即可,如下圖:

第二步:找到 WebSphere 6.1 的連接器設(shè)置,在 Window > Preferences > MyEclipse > Application Servers > WebSphere 6.1 中, ? Once you have navigated to the WebSphere 6.1 preference window, first be sure to Enable the application server, then fill in the WebSphere installation location.? Most of the remaining fields will be defaulted for you. All of the fields should be straight forward, the only two that might be a little tricky are the Node Name and Server Name fields that are shown below. The Node Name field is the value you used during the Profile creation wizard, in our example it was gd12580 and the Cell Name is the directory name you had to lookup in the step above. When you are done, click the JDK node under the WebSphere 6.1 node on the left. Here we will configure the IBM JDK that MyEclipse will use to launch WebSphere. 不翻譯了,不懂的請拿金山詞霸出來照吧,如下圖:

配置成功之后的 was 服務(wù)器可以在 myeclipse 中看到,啟動,出現(xiàn)一下信息,則恭喜你,成功咯!如下圖:

MyEclipse 中部署 EAR/WAR

該部分主要描述在 MyEclipse 中部署 EAR WAR ,包括快速部署、熱部署等,具體細(xì)節(jié)在此不一一描述,有興趣的請參考 MyEclipse 的幫助。