Eclipse RCP+Spring建胖客户端Web程序

系统 1475 0
  三. 把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。

Eclipse RCP+Spring建胖客户端Web程序
图9.输出第三方库

  4. 现在,你要修改SpringClient的manifest。在包资源管理器中,展开SpringClient->META-INF并且打开MANIFEST.MF。点击"Runtime"选项卡并且点击Classpath部分的"Add"。全选Spring jars和logging jars并且点击OK。现在,在"Exported Packages"节中,点击Add。选择所有的包以便导出,并点击OK(见图10)。

Eclipse RCP+Spring建胖客户端Web程序
图10.把第三方库添加到插件Classpath并导出包

  我以前提及过,Eclipse的classloader经常引起问题。为了补救这一点,你可以点击MANIFEST.MF选项卡并且添加下面一行:

  Eclipse-BuddyPolicy: registered

  5. 现在,让我们添加spring配置文件。在Package Explorer中,转到src目录,创建一个新文件applicationContext.xml,并且加入下列内容:

Eclipse RCP+Spring建胖客户端Web程序

  在src目录下,另外创建一个新文件beanRefFactory.xml并且加入下列内容:

Eclipse RCP+Spring建胖客户端Web程序

  不必感到惊讶,这些配置文件与你对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)。

Eclipse RCP+Spring建胖客户端Web程序
图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)。

Eclipse RCP+Spring建胖客户端Web程序
图12.把SpringClient添加为一个要求的插件

  现在,你必须在EclipseTradeClient manifest文件中添加与Eclipse的伙伴策略相关的内容。在文件plugin.xml中,点击MANIFEST.MF选项卡并且添加下列入口:

  Eclipse-RegisterBuddy: SpringClient

Eclipse RCP+Spring建胖客户端Web程序


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论