?
三. 把Spring Remoting添加到你的應(yīng)用程序
下面,我們把Spring添加到你的Eclipse豐富的客戶端以便它向前一篇文章中的StockTradeServer工程發(fā)出請(qǐng)求。
首先,當(dāng)開(kāi)發(fā)Eclipse插件/RCP應(yīng)用程序時(shí),添加第三方庫(kù)的推薦的方法是通過(guò)另外一個(gè)插件。這樣做以后,你就不需要把這些第三方j(luò)ars添加到你創(chuàng)建的每個(gè)工程。而是,你僅建立你的插件/RCP工程和第三方庫(kù)工程之間的某種依賴性。首先,我們假定你熟悉Eclipse的classloader。要點(diǎn)是,你必須采取一些額外的步驟來(lái)確保你的類在插件依賴性之間能夠彼此找到對(duì)方:
1. 在Eclipse中創(chuàng)建一個(gè)新的插件工程。并命名這個(gè)新工程為SpringClient。然后,設(shè)置如下值:
在填充Plug-in屬性后,點(diǎn)擊Finish。對(duì)于SpringClient插件工程,你不需要任何模板,因?yàn)槠渲饕康氖谴鎯?chǔ)Spring庫(kù)和任何Spring相關(guān)的服務(wù)類。
2. 在你的解壓的spring-framework-1.2.8發(fā)行包中,你會(huì)找到下列jar文件:
·spring-aop.jar-在文件夾dist下
·spring-beans.jar-在文件夾dist下
·spring-context.jar-在文件夾dist下
·spring-core.jar-在文件夾dist下
·spring-remoting.jar-在文件夾dist下
·commons-logging.jar-在文件夾lib\jakarta-commons下
·log4j-1.2.13.jar-在文件夾lib\log4j下
然后,把它們?nèi)繌?fù)制到你的SpringClient根目錄下。
3. 在Eclipse的包資源管理器中,右擊SpringClient以打開(kāi)工程屬性。選擇"Java Build Path",點(diǎn)擊"Libraries"選項(xiàng)卡,并且把剛才你通過(guò)按鈕"Add JARs"添加的所有的那些jar文件加入。請(qǐng)確保你也導(dǎo)入了這些庫(kù)!點(diǎn)擊"Order and Export"選項(xiàng)卡,并且檢查所有的庫(kù)(見(jiàn)圖9)。通過(guò)這樣做,你就可以確保,當(dāng)你創(chuàng)建對(duì)SpringClient的一種工作依賴性時(shí),spring和log jars也是可用的。此后,點(diǎn)擊OK。
4. 現(xiàn)在,你要修改SpringClient的manifest。在包資源管理器中,展開(kāi)SpringClient->META-INF并且打開(kāi)MANIFEST.MF。點(diǎn)擊"Runtime"選項(xiàng)卡并且點(diǎn)擊Classpath部分的"Add"。全選Spring jars和logging jars并且點(diǎn)擊OK?,F(xiàn)在,在"Exported Packages"節(jié)中,點(diǎn)擊Add。選擇所有的包以便導(dǎo)出,并點(diǎn)擊OK(見(jiàn)圖10)。
我以前提及過(guò),Eclipse的classloader經(jīng)常引起問(wèn)題。為了補(bǔ)救這一點(diǎn),你可以點(diǎn)擊MANIFEST.MF選項(xiàng)卡并且添加下面一行:
Eclipse-BuddyPolicy: registered
5. 現(xiàn)在,讓我們添加spring配置文件。在Package Explorer中,轉(zhuǎn)到src目錄,創(chuàng)建一個(gè)新文件applicationContext.xml,并且加入下列內(nèi)容:
在src目錄下,另外創(chuàng)建一個(gè)新文件beanRefFactory.xml并且加入下列內(nèi)容:
不必感到驚訝,這些配置文件與你對(duì)stocktradeserver工程進(jìn)行單元測(cè)試時(shí)使用的spring配置文件是相同的,除了你重命名了applicationContext.xml以外。
6. 為了簡(jiǎn)化問(wèn)題,你可以把類從stocktradeserver工程復(fù)制到SpringClient的src目錄下。在SpringClient的src目錄下面,創(chuàng)建包stephenlum.services.stock和stephenlum.services.stock.dto。
如果你還沒(méi)有準(zhǔn)備好,你可以下載本文源碼或參考我的前一篇文章并且復(fù)制stephenlum.services.stock下的類StockService.java。然后,復(fù)制在stephenlum.services.stock.dto下的類StockDTO.java(見(jiàn)圖11)。
7. 把代碼添加到類SpringClientPlugin以裝載Spring的應(yīng)用程序上下文。注意,你要把該代碼添加到構(gòu)造器中。下面是新的SpringClientPlugin類:
8. 最后,添加依賴性以實(shí)現(xiàn)工程EclipseTradeClient依賴于你的新插件工程SpringClient。在工程EclipseTradeClient中,打開(kāi)plugin.xml并且點(diǎn)擊"Dependencies"選項(xiàng)卡。在"Required Plug-ins"節(jié)中,點(diǎn)擊Add,選擇"SpringClient(1.0.0)",并且點(diǎn)擊OK(見(jiàn)圖12)。
現(xiàn)在,你必須在EclipseTradeClient manifest文件中添加與Eclipse的伙伴策略相關(guān)的內(nèi)容。在文件plugin.xml中,點(diǎn)擊MANIFEST.MF選項(xiàng)卡并且添加下列入口:
Eclipse-RegisterBuddy: SpringClient
下面,我們把Spring添加到你的Eclipse豐富的客戶端以便它向前一篇文章中的StockTradeServer工程發(fā)出請(qǐng)求。
首先,當(dāng)開(kāi)發(fā)Eclipse插件/RCP應(yīng)用程序時(shí),添加第三方庫(kù)的推薦的方法是通過(guò)另外一個(gè)插件。這樣做以后,你就不需要把這些第三方j(luò)ars添加到你創(chuàng)建的每個(gè)工程。而是,你僅建立你的插件/RCP工程和第三方庫(kù)工程之間的某種依賴性。首先,我們假定你熟悉Eclipse的classloader。要點(diǎn)是,你必須采取一些額外的步驟來(lái)確保你的類在插件依賴性之間能夠彼此找到對(duì)方:
1. 在Eclipse中創(chuàng)建一個(gè)新的插件工程。并命名這個(gè)新工程為SpringClient。然后,設(shè)置如下值:
ID = SpringClient
Class = springClient.SpringClientPlugin |
在填充Plug-in屬性后,點(diǎn)擊Finish。對(duì)于SpringClient插件工程,你不需要任何模板,因?yàn)槠渲饕康氖谴鎯?chǔ)Spring庫(kù)和任何Spring相關(guān)的服務(wù)類。
2. 在你的解壓的spring-framework-1.2.8發(fā)行包中,你會(huì)找到下列jar文件:
·spring-aop.jar-在文件夾dist下
·spring-beans.jar-在文件夾dist下
·spring-context.jar-在文件夾dist下
·spring-core.jar-在文件夾dist下
·spring-remoting.jar-在文件夾dist下
·commons-logging.jar-在文件夾lib\jakarta-commons下
·log4j-1.2.13.jar-在文件夾lib\log4j下
然后,把它們?nèi)繌?fù)制到你的SpringClient根目錄下。
3. 在Eclipse的包資源管理器中,右擊SpringClient以打開(kāi)工程屬性。選擇"Java Build Path",點(diǎn)擊"Libraries"選項(xiàng)卡,并且把剛才你通過(guò)按鈕"Add JARs"添加的所有的那些jar文件加入。請(qǐng)確保你也導(dǎo)入了這些庫(kù)!點(diǎn)擊"Order and Export"選項(xiàng)卡,并且檢查所有的庫(kù)(見(jiàn)圖9)。通過(guò)這樣做,你就可以確保,當(dāng)你創(chuàng)建對(duì)SpringClient的一種工作依賴性時(shí),spring和log jars也是可用的。此后,點(diǎn)擊OK。
4. 現(xiàn)在,你要修改SpringClient的manifest。在包資源管理器中,展開(kāi)SpringClient->META-INF并且打開(kāi)MANIFEST.MF。點(diǎn)擊"Runtime"選項(xiàng)卡并且點(diǎn)擊Classpath部分的"Add"。全選Spring jars和logging jars并且點(diǎn)擊OK?,F(xiàn)在,在"Exported Packages"節(jié)中,點(diǎn)擊Add。選擇所有的包以便導(dǎo)出,并點(diǎn)擊OK(見(jiàn)圖10)。
我以前提及過(guò),Eclipse的classloader經(jīng)常引起問(wèn)題。為了補(bǔ)救這一點(diǎn),你可以點(diǎn)擊MANIFEST.MF選項(xiàng)卡并且添加下面一行:
Eclipse-BuddyPolicy: registered
5. 現(xiàn)在,讓我們添加spring配置文件。在Package Explorer中,轉(zhuǎn)到src目錄,創(chuàng)建一個(gè)新文件applicationContext.xml,并且加入下列內(nèi)容:

在src目錄下,另外創(chuàng)建一個(gè)新文件beanRefFactory.xml并且加入下列內(nèi)容:

不必感到驚訝,這些配置文件與你對(duì)stocktradeserver工程進(jìn)行單元測(cè)試時(shí)使用的spring配置文件是相同的,除了你重命名了applicationContext.xml以外。
6. 為了簡(jiǎn)化問(wèn)題,你可以把類從stocktradeserver工程復(fù)制到SpringClient的src目錄下。在SpringClient的src目錄下面,創(chuàng)建包stephenlum.services.stock和stephenlum.services.stock.dto。
如果你還沒(méi)有準(zhǔn)備好,你可以下載本文源碼或參考我的前一篇文章并且復(fù)制stephenlum.services.stock下的類StockService.java。然后,復(fù)制在stephenlum.services.stock.dto下的類StockDTO.java(見(jiàn)圖11)。
7. 把代碼添加到類SpringClientPlugin以裝載Spring的應(yīng)用程序上下文。注意,你要把該代碼添加到構(gòu)造器中。下面是新的SpringClientPlugin類:
package springClient;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.access.BeanFactoryLocator; import org.springframework.beans.factory.access.BeanFactoryReference; import org.springframework.beans.factory.access.SingletonBeanFactoryLocator; /** *應(yīng)用于桌面的主插件類。 */ public class SpringClientPlugin extends AbstractUIPlugin { private BeanFactory beanFactory; //共享實(shí)例. private static SpringClientPlugin plugin; /** *構(gòu)造器. */ public SpringClientPlugin() { plugin = this; BeanFactoryLocator beanFactoryLocator = SingletonBeanFactoryLocator.getInstance(); BeanFactoryReference beanFactoryReference = beanFactoryLocator.useBeanFactory("ctx"); beanFactory = beanFactoryReference.getFactory(); } /** *在插件激活時(shí)調(diào)用這個(gè)方法 */ public void start(BundleContext context) throws Exception { super.start(context); } /** *當(dāng)停止插件時(shí),調(diào)用這個(gè)方法 */ public void stop(BundleContext context) throws Exception { super.stop(context); plugin = null; } /** *返回共享實(shí)例. */ public static SpringClientPlugin getDefault() { return plugin; } /** *返回在給定的插件相對(duì)路徑下的圖像文件的一個(gè)圖像描述符 * @param path-路徑 * @返回圖像描述符 */ public static ImageDescriptor getImageDescriptor(String path) { return AbstractUIPlugin.imageDescriptorFromPlugin("SpringClient", path); } public BeanFactory getBeanFactory() { return beanFactory; } } |
8. 最后,添加依賴性以實(shí)現(xiàn)工程EclipseTradeClient依賴于你的新插件工程SpringClient。在工程EclipseTradeClient中,打開(kāi)plugin.xml并且點(diǎn)擊"Dependencies"選項(xiàng)卡。在"Required Plug-ins"節(jié)中,點(diǎn)擊Add,選擇"SpringClient(1.0.0)",并且點(diǎn)擊OK(見(jiàn)圖12)。
現(xiàn)在,你必須在EclipseTradeClient manifest文件中添加與Eclipse的伙伴策略相關(guān)的內(nèi)容。在文件plugin.xml中,點(diǎn)擊MANIFEST.MF選項(xiàng)卡并且添加下列入口:
Eclipse-RegisterBuddy: SpringClient
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
