【聚杰网数据库编程】Eclipse RCP+Spring建胖客户端Web程序
![]() 图10.把第三方库添加到插件Classpath并导出包 |
我以前提及过,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)。
![]() 图11.完成上面操作后的Package Explorer看上去的样子 |
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)。
![]() 图12.把SpringClient添加为一个要求的插件 |
现在,你必须在EclipseTradeClient manifest文件中添加与Eclipse的伙伴策略相关的内容。在文件plugin.xml中,点击MANIFEST.MF选项卡并且添加下列入口:







