三. 把Spring Remoting添加到你的应用程序
下面,我们把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。
图9.输出第三方库 |
4. 现在,你要修改SpringClient的manifest。在包资源管理器中,展开SpringClient->META-INF并且打开MANIFEST.MF。点击"Runtime"选项卡并且点击Classpath部分的"Add"。全选Spring jars和logging jars并且点击OK。现在,在"Exported Packages"节中,点击Add。选择所有的包以便导出,并点击OK(见图10)。
图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选项卡并且添加下列入口:
Eclipse-RegisterBuddy: SpringClient
分享到:
相关推荐
3. **Eclipse Web Tools Platform (WTP)**:WTP是Eclipse用于Web和Java EE应用程序开发的核心组件。它提供了创建、编辑、部署和调试Web应用的全套工具,支持HTML、CSS、JavaScript以及服务器端Java技术。 4. **...
了解如何在Eclipse中集成其他开发工具和框架,如Spring,Hibernate,或者使用Eclipse for RCP and RAP进行富客户端应用开发。 总之,"eclipse从入门到精通源码"的学习涵盖了Eclipse的基础使用、进阶技巧、源码分析...
Eclipse的核心是一个称为“富客户端平台”(Rich Client Platform, RCP)的框架,它为构建桌面应用程序提供了一个可扩展的模型。RCP由一系列服务组成,这些服务包括工作台(Workbench)、视图(Views)、编辑器...
Eclipse 不仅是一个IDE,还是一个可扩展的富客户端平台,开发者可以基于它构建自定义的应用程序。 9. **JDT(Java Development Tools)** JDT是Eclipse中专门用于Java开发的核心组件,包含了许多针对Java的特性,...
这个项目可能是一个Web应用程序,利用了Spring的强大功能来管理和协调应用的后端逻辑,同时利用GWT进行前端用户界面的开发。下面将详细阐述Spring框架和GWT的相关知识点。 1. **Spring框架**: - **IoC(Inversion...
6. **Java桌面开发**:对Java桌面开发技术如Swing或Eclipse RCP(富客户端平台)的熟悉,意味着工程师可以开发桌面应用程序,满足不同场景的需求。 7. **绩效考核与项目经验**:有绩效考核评估、平衡计分卡产品或...
3. **Eclipse RCP**:基于OSGi的桌面应用框架,允许开发者构建可插拔的富客户端应用程序。 **OSGi的分布式特性** 1. **远程服务**:OSGi通过RMI或HTTP等协议实现跨节点的服务调用,支持分布式系统的构建。 2. **...
“#WorldBuilder” ... 最初,它将由带有本地文件I / O的Eclipse RCP应用程序界面组成,希望可以扩展为一个轻松的Web服务,然后是目前我正在考虑使用Android应用程序和/或Spring MVC Web应用程序的其他各种客户端。
除了上述核心知识点,《精通JavaScript》还提到了许多其他相关的技术和资源,包括Struts、Hibernate、Spring MVC、JSF、Eclipse RCP、Lucene、Ant、JUnit、Ajax、Dojo、Prototype、script.aculo.us等。这些技术与...
对于更复杂的桌面应用,还可以考虑使用Eclipse RCP或NetBeans Platform。 11. **Web框架**:Spring Boot和Struts2是常见的Web开发框架,它们简化了MVC模式的应用开发。另外,Play Framework和Vert.x提供了基于异步...
SpringMVC | MVC框架 | [http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc](http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc) ...