首页 / 软件开发 / JAVA / Spring BlazeDS Integration简介与入门
Spring BlazeDS Integration简介与入门2011-01-20 infoq 译:张龙去年底Adobe与Spring共同宣布将联合开发一个新项目:Spring BlazeDS Integration。其目标是:开发者可以利用Spring开发模型通过Adobe Flex、BlazeDS、Spring以及Java技术创建RIA。这样我们就可以通过BlazeDS公开Spring管理的服务而无需额外的配置文件。其优势在于将Spring的易用性与Flex、BlazeDS以及Java整合起来以共同创建应用。我将在本文中介绍Spring BlazeDS Integration项目对传统开发方式有哪些改观,同时展示一些相关示例。首先,我们一起来看看它是如何改变应用的集成方式以及如何对现有的 Spring项目进行转换使之可以利用新的集成。最后我将对该项目的其他特性以及优势进行适当的介绍。以Spring的方式开发RIASpring的横空出世完全颠覆了传统Java服务端的开发方式。它鼓励通过依赖注入的方式来装配POJO,这极大地简化了应用的开发与测试。Spring的核心配置是通过Java bean实现的。借助于bean,任何Java类都能被公开成为服务。比如说,下面的配置片段就将Soda服务声明为一个Spring bean:<!-- Implementation of soda bean-->
<bean id="sodaBean" class="com.gorillalogic.sodaBank.SodaService" init-method="initSodaAccounts">
<property name="numAccounts" value="1000"/>
</bean>为了将这些bean公开成为Flex客户端所用的远程服务,Integration项目采用了Spring Web 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站点(http://www.springsource.org/spring-flex))下载,也可以使用示例项目中的程序库。对于这个示例来说,我们打算将一个简单的Soda Service项目修改为Spring BlazeDS项目。首先要修改web.xml文件。将该文件中所有对BlazeDS MessageBrokerServlet的引用都删掉,然后加上对Spring DispatcherServlet的引用:<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/web-application-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/gorilla/*</url-pattern>
</servlet-mapping>