Eclipse RCP+Spring建胖客户端Web程序
摘要 Eclipse丰富的客户端平台(RCP)正在快速地成为构建胖客户端应用程序的框架选择。本文将向你详细介绍如何利用Eclipse RCP进行Spring Web开发。一. 引言
尽管Web 2.0和丰富的因特网应用程序(RIA)如今极为风行,但是,当你真正需要胖客户端功能时构建一个丰富的Web前端可能并不真正满足你的要求。
但是,如果你确实想避开所谓RIA狂热而选择一种实际的胖客户端解决方案的话,那么你该怎样做呢?回答是:你可以选择一种丰富的客户端平台(RCP)来为你处理大多数的工作。实质上,这种RCP概念为Java桌面应用程序世界提供了一种新型的框架。
一个RCP提供了一个应用程序的框架/外壳,还有一组基于模块的API,你能够基于这一外壳来构建自己的应用程序。这个RCP负责实现所有的繁重任务,例如添加菜单,工具条,不同的视图等等,而你就不必再重复工作。
本文将引导你详细地构建一个胖客户端接口以连接到在上一篇文章中构建的服务器上。你将基于Eclipse丰富的客户端平台来构建胖客户端,然后把Eclipse RCP与Spring集成到一起。
【准备工作】
·Eclipse 3.1.2
·MyEclipse 4.1.1
·Java SE 5
·一个Servlet容器或J2EE服务器(本文使用的是Tomcat 5.5+)
·Spring 1.2+
二. 为什么使用Eclipse RCP?
如今已经有越来越多的应用程序基于Eclipse RCP进行开发(当然,还有Eclipse厚实的开发背景),所以,我们可以安全地假定,与任何其它框架相比,这种框架已经得到更为广泛的测试。
下面,让我们开始。
(一) 创建一个新的Eclipse插件工程
请按照下列步骤为你的丰富的客户端应用程序创建一个新的Eclipse插件工程:
1. 在Eclipse中创建一个新的插件工程,并命名工程为EclipseTradeClient。把这个插件的应用目标定位在Eclipse 3.1版本,并且确保点选了"Create an OSGi bundle manifest"(见图1),并点击Next。
图1."New Plug-in Project"对话框在Eclipse中创建一个新的插件工程EclipseTradeClient。 |
2. 在"Plug-in Content"屏幕上,保持默认设置,但是确保选择了"Yes"-创建一个丰富的客户端应用程序(见图2),并点击Next。
图2.在"Plug-in Content"屏幕选择创建一个丰富的客户端应用程序。 |
·至于模板,选择"RCP application with a view",并点击Next。
·填写显示如图3的RCP应用程序属性,并点击Finish。之后,你将被提示转到"Plug-in Development"视图下,并点击Yes。
图3.RCP插件工程向导最后的结果屏幕 |
·现在,你已经创建了你的工程,再打开plugin.xml。你将看到如下图4所示的屏幕快照。
图4.Plugin.XML概要 |
如果你是Eclipse插件开发的新手,你可能经常需要使用底部的plugin.xml选项卡。正如你从Overview选项卡中所看到的,你可以运行/调试你的Eclipse丰富的客户端应用程序。
·展开EclipseTradeClient/src/eclipseTradeClient包来观察Eclipse的RCP向导为你创建的类。在Eclipse编辑器中,点击"All Extensions"选项卡并且展开每一个顶级的结点,如图5所示。
图5.Eclipse生成的类及所有的扩展 |
请注意一下你的Application类,Perspective类和View类的扩展入口。既然Eclipse的丰富的客户端平台包括plugin.xml文件,所以你可以简单地添加新的组件-通过"Extensions"选项卡中的"Add..."按钮来添加它们。
(二) 重构默认的View类
如你所见,Eclipse向导为你创建了一个称为View的类。并不是很有用,对吗?请使用如下步骤来重构默认的视图类:
1. 让我们重命名它-右击Package Explorer中的View.java。转到Refactor->Rename,输入新名为ExplorerView并且点击Preview。在随后弹出的面板上,你会看到Perspective类被重构-使用ExplorerView.ID来代替View.ID(见图6)。点击OK。
图6.为ExplorerView重构View类 |
2. 遗憾的是,Eclipse的重构能力有点弱-特别与IntelliJ作比较的话。对于象这样的重构来说,IntelliJ将不仅按期望对类加以改变,而且它会把重构应用于你的.xml文件!这是非常有用的特征,特别是在一种Spring/Hibernate/XML配置操作比例极大的情况下。
你必须手工地更新对plugin.xml的重构。打开plugin.xml,并且点击plugin.xml选项卡。找到相应于View的扩展,并且作如下更新:
name="ExplorerView" class="eclipseTradeClient.ExplorerView" id="EclipseTradeClient.explorerView"> |
此后,进行保存(见图7)。
图7.进一步重构-手工更新Plugin.XML |
3. 对于这种简单的重构,情况就是这样,对吗?是的;但遗憾的是,你还没有结束。打开类ExplorerView,改变静态变量ID-把它初始化为EclipseTradeClient.explorerView。这相应于你刚才在plugin.xml中设置的ID。
4. 最后,你完成重构。现在,让我们测试一下是否一切改动正常。切换回编辑器中的plugin.xml,并且点击"Overview"选项卡。点击"Launch an Eclipse application",这应该导致如图8所示结果。
图8.启动Eclipse Trade Client程序 |
5. 现在让我们改变结点的名字。打开类ExplorerView。找到内部类ViewContentProvider,并且改变方法"Object getElements(Object parent)",让其返回一个字符串数组({"Watch List","Order History"})。
三. 把Spring Remoting添加到你的应用程序
下面,我们把Spring添加到你的Eclipse丰富的客户端以便它向前一篇文章中的StockTradeServer工程发出请求。
首先,当开发Eclipse插件/RCP应用程序时,添加第三方库的推荐的方法是通过另外一个插件。这样做以后,你就不需要把这些第三方jars添加到你创建的每个工程。而是,你仅建立你的插件/RCP工程和第三方库工程之间的某种依赖性。首
补充:软件开发 , Java ,