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

在src目錄下,另外創建一個新文件beanRefFactory.xml并且加入下列內容:

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

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