Online Book Reader

Home Category

Beautiful RIA [13]

By Root 419 0
目对传统开发方式有哪些改观,同时展示一 些相关示例。首先,我们一起来看看它是如何改变应用的集成方式以及如何对现有的 Spring 项目进行转换使之可以利用新的集成。最后我将对该项目的其他特性以及优势进行适当的介 绍。

本文所用的示例应用是个简单的苏打(soda)服务,它提供了基本的账户信息。其所用的数 据模型是 SodaAccount,代表了客户端账户信息。

以 Spring的方式开发 RIA

Spring的横空出世完全颠覆了传统 Java服务端的开发方式。它鼓励通过依赖注入的方式来装 配 POJO,这极大地简化了应用的开发与测试。

Spring的核心配置是通过 Java bean实现的。借助于 bean,任 何 Java类都能被公开成为服务。 比如说,下面的配置片段就将 Soda服务声明为一个 Spring bean:

init-method="initSodaAccounts">

为了将这些 bean公开成为 Flex客户端所用的远程服务,Integration项目采用了 Spring Web

Spring BlazeDS Integration简介与入门

MVC 。Spring Web MVC将 DispatcherServlet作为一个中央分发器,用以处理任何类型的 HTTP 请求或是基于 HTTP的远程服务。我们可以通过相同的 JavaBean配置方式来配置该 DispatcherServlet以将请求转发给相应的处理器进行后续处理。

之前, BlazeDS项目会通过 MessageBrokerServlet将请求路由给相应的 BlazeDS Message Broker。现在借助于 Spring BlazeDS,Spring Web MVC DispatcherServlet已经替代了 MessageBrokerServlet,接下来就需要配置 DispatcherServlet以将请求 转发给 MessageBrokerHandlerAdapter。 该适配器本身是个 Spring工厂 bean,它会在 Spring Web应 用上下文中创建一个局部 BlazeDS Message Broker实例,然后将 Spring bean公开成为远程服 务,之后 Flex客户端就能够直接调用该服务了。

这种配置 BlazeDS Message Broker的方式可以与 Spring项目结合的更加紧密,同时还减少了 将 Spring bean公开成远程服务所需的配置量。比如说之前,我们需要在 messaging.xml中声 明一个单独的条目来公开 Java服务,但现在可以轻松地在声 明 Spring bean的那个配置文件 中公开远程 bean。

Spring BlazeDS Integration也使用了一些标准的 BlazeDS XML配置文件来配置消息基础设施。 这包括通道定义等一些内容。

该项目的下一版本将要增加与Spring Security的集成。最初的实现会通过一个pointcut advisor 来保护 BlazeDS端点。Pointcut advisor是 Spring AOP支持的一部分。

建立全新的 Spring BlazeDS Integration项目——服务器端

无论是建立全新的项目还是为现有的项目增加支持,步骤都是大同小异的。第一步需要将所 需的 jar文件增加到程序库目录中。可以通过 Spring Source站点下载,也可以使用示例项目 中的程序库。

对于这个示例来说,我们打算将一个简单的 Soda Service项目修改为 Spring BlazeDS项目。 首先要修改 web.xml文件。将该文件中所有对 BlazeDS MessageBrokerServlet的引用都删掉, 然后加上对 Spring DispatcherServlet的引用:

Spring MVC Dispatcher Servlet

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

/WEB-INF/config/web-application-config.xml

Spring BlazeDS Integration简介与入门

1

Spring MVC Dispatcher Servlet

以上配置通过标准的 Servlet映射模式将所有的请求路由给 DispatcherServlet,同时还将上下 文配置信息指定为 web-application-config.xml。

标准的 BlazeDS文件位于 WEB-INF/flex中,其主文件为 services-config.xml,其中定义了通道、 日志及其他系统配置。该文件的一个变化就是标准 AMF通道的 URL变成通过 DispatcherServlet来路由请求:

class="flex.messaging.endpoints.AMFEndpoint"/>

web-application-config.xml 是主配置文件。事实上,一旦配置好了其他文件,那么在大多数 情况下只需要修改该文件就行了。在 web-application-config.xml文件中声明了 MessageBrokerHandlerAdapter,这样就会将 HTTP消息路 由给 Spring管理的 Message Broker。

文件中声明的框架的另一部分是 MessageBrokerFactoryBean。它对我们想处理的 URL进行了 映射,也就是发往 Dispatch Servlet的所有请求:

/*=mySpringManagedMessageBroker

class="org.springframework.flex.messaging.MessageBrokerFactoryBean"/>

由于 DispatcherServlet监听着/gorilla路径,因此该配置会将发送给/gorilla URL的所有请求都 传给 Spring管理的 MessageBroker。然后由于 Message Broker使用了

WEB-INF/flex/services-config.xml外的通道配置,这样发送给/gorilla /messagebroker的消息就 会被路由给声明为服务的那些 bean了。

这样,Message Broker就与 bean发生了联系,下一步配置就是声明应用中的 Spring bean并

Spring BlazeDS Integration简介与入门

将其公开成为远程服务。在该示例中,我们将 SodaService声明为 sodaBean:

init-method="initSodaAccounts">

接下来,为 BlazeDS remoting公开 sodaBean:

class="org.springframework.flex.messaging.remoting.FlexRemotingServiceExporter">

®Online Book Reader