Spring flex 搭建服务 之 编程环境配置和我的第一个程序(第二章,第一节)

1. 项目使用的编程环境和相关的jar包

一个简单的Flex+Spring开发环境需要很多环境上的配置,但是,这些配置基本上都是一次性的,也就是说,您这次配置成功了,下次还可以使用相同的配置。您可以将需要的jar包放在一个单独的目录中,当下次使用时直接拷贝过去即可。

1.1.Java 使用javaEE版本,JDK+javaEEBundle。即java platform,Enterprise Edition 6 SDK Update1(with JDK 6 U22),下载地址www.oracle.com/technetwork/java/javase/downloads/index.html(注意要选择javaEE那个版本的),下载后直接安装即可。

1.2.Eclipse 使用的是Eclipse IDE forjavaEE Developers,可以从官方网站www.eclipse.org/downloads/上下载(要注意下载的是javaEE版本的),下载后直接安装即可。

1.3.FlexBuilder4使用的是Adobe FlashBuilder4 ,下载地址:www.adobe.com/products/flashbuilder下载单独版本的,(不是Eclipse插件类型),下载后直接安装即可。

1.4.Tomcat 7.0 可以从http://tomcat.apache.org/download-70.cgi上下载到这个版本。

1.5.Spring3.0 下载 Spring Framework3.0.5.RELEASE版本即可。下载地址:www.springsource.org/download.下载后是个压缩包,里面有很多jar包。spring-framework-3.0.3.RELEASE-with-docs.zip,在flex+Spring工程中会使用其中一部分jar包。

1.6.BlazeDS 负责flex前台和Spring后台间的通信,下载地址:http://opensource.adobe.com/wiki/display/blazeds/BlazeDS,下载:blazeds-turnkey-4.0.0.14931.zip这个版本。Zip中包含了BlazeDS需要的jar包,在flex+Spring工程中会使用其中的一部分jar包。

1.7.与日志相关的常规jar包:commons-logging-1.1.1.jar,log4j-1.2.16.jar,slf4j-log4j12-1.5.8.jar,这些jar包可以直接到Google中,输入相应的jar包进行下载。

1.8.运行环境需要的jar包:aopalliance.jar(这个是aop联盟规定的标准,Spring中需要使用),asm-3.3.jar(汇编语言需要的包,Spring等将代码自己编译成汇编),cglib.jar(是一个运行时的编译库,可将java代理等内容直接编译成二进制),backport-util-concurrent-2.2.jar(工具箱jar)

 

上述的配置基本上就可以完成需要的Spring+flex了。

最后,tomcat7.0运行时还需要一个优化文件,tcnative-1.dll,这个文件需要根据你不同的主机选择不同的文件,一般使用tcnative-1.dll 1.1.17版本,然后选择不同的系统版本,下载后放入System32文件夹中。

当上面所有的内容都下载安装完成后,就可以开始设计我们的第一个Flex+Spring的程序了。

 

2.      Eclipse环境的配置

下面对Eclipse的开发环境进行配置,主要包括jdk的映射,tomcat的映射,以及新的web项目的创建。

2.1.Java环境的配置

在Eclipse中的,Window->Preferences->Java->InstalledJREs 中,选择Add添加一个JDK,新添加的jdk最好是上述安装过的javaEE的jdk(注意,就是1.1中提到的安装目录中的那个jdk,根据自己的情况选择)

2.2.Tomcat环境的配置

在Eclipse中,window->Preferences->Server->RuntimeEnvironments 选项卡中,选择Add->选择Apache Tomcat V7.0 ,将上述的1.4中提到的tomcat7.0的目录指定为Runtime Environment。

2.3.创建一个Server工程。

在Eclipse中,选择file->new->other->Server->Server选择服务为tomcat7.0。点finished。这时在project Explorer中出现Servers项目。这个项目的作用是,当web服务执行run on server后,该项目会自动在这个Servers项目中配置发布。

2.4.创建一个动态的Web工程

在Eclipse中,选择file->new->other->Web->DynamicWeb Project创建一个Web工程。Project Name叫:MyFirstFlexSpringService,在target runtime选项中选择Apache Tomcat V7.0(注意这个需要你在2.2中配置成功后才能出现)。然后点击finish即可。

这时在ProjectExplorer中会出现MyFirstFlexSpringService项目。

2.5.选择构建Spring服务端需要的jar包

2.5.1.       spring-framework-3.0.3.RELEASE-with-docs.zip中的spring-framework-3.0.3.RELEASE\dist目录下的:

1)        org.springframework.aop-3.0.3.RELEASE.jar(aop操作需要的库就是切面编程)

2)        org.springframework.asm-3.0.3.RELEASE.jar(asm汇编相关的库)

3)        org.springframework.aspects-3.0.3.RELEASE.jar(切面编程)

4)        org.springframework.beans-3.0.3.RELEASE.jar(javaBean相关)

5)        org.springframework.context-3.0.3.RELEASE.jar(Spring的上下文环境)

6)        org.springframework.context.support-3.0.3.RELEASE.jar(Spring上下文创建需要的)

7)        org.springframework.core-3.0.3.RELEASE.jar(Spring的核心库)

8)        org.springframework.expression-3.0.3.RELEASE.jar(表达式相关)

9)        org.springframework.instruments-3.0.3.RELEASE.jar(框架相关)

10)    org.springframework.instruments.tomcat-3.0.3.RELEASE.jar(Spring与tomcat相关)

11)    org.springframework.web.Servlet-3.0.3.RELEASE.jar(Servlet相关的)

12)    org.springframework.web-3.0.3.RELEASE.jar(web相关)

13)    org.springframework.Spring-library-3.0.3.RELEASE.libd

2.5.2.       blazeds-turnkey-4.0.0.14931.zip中的blazed\tomcat\webapps\samples\WEB-INF\lib目录下的:

1)        flex-messaging-common.jar

2)        flex-messaging-core.jar

3)        flex-messaging-opt.jar

4)        flex-messaging-proxy.jar

5)        flex-messaging-remoting.jar

6)        flex-rds-server.jar(rds,远程数据服务)

2.5.3.       日志相关的包(从Google上找,很容易找到)

1)        commons-logging-1.1.1.jar

2)        log4j-1.2.16.jar

3)        slf4j-log4j12-1.5.8.jar

2.5.4.       执行环境相关

1)        Aopalliance.jar(aop联盟工具包)

2)        asm-3.3.jar

3)        cglib-2.2.jar

4)        backport-util-concurrent-2.2.jar

2.5.5.       Flex+Spring相关包

org.springframework.flex-1.0.3.RELEASE

将以上描述的所有jar包放入MyFirstFlexSpringService工程的/WebContent/WEB-INF/lib目录下,jar包配置完成。

有关jar包的筛选是个很有学问的问题,在使用过程中,应该保证尽量添加那些使用到的jar包,不要添加多余的jar包。这个过程可以根据自己对相应架构的理解、日常经验以及不断的测试进行筛选。

3.      第一个Web工程的源码与配置分析

3.1.web.xml的配置

web.xml是tomcat创建web应用所需的配置信息文件。通过对web.xml进行配置,tomcat指定要将投递过来的请求交给Spring的Dispatch进行下一步分发。配置文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

   xmlns="http://java.sun.com/xml/ns/javaee"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 

   <display-name>BlazeDS Spring IntegrationApplication</display-name>

   <description>BlazeDS Spring IntegrationApplication</description>

   <!-- Spring DispatcherServlet -->  

   <servlet>

   <!-- 配置Spring服务的Dispatch,注意由于Servlet-name是Spring,所以默认情况下

         Spring的配置文件应该是与web.xml同一目录下,名字为spring-servlet.xml的文件-->

       <servlet-name>spring</servlet-name>

      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

       <load-on-startup>1</load-on-startup>

   </servlet>

 

   <servlet-mapping>

   <!-- 将所有投递过来的前缀为messagebroker的请求转交给Spring的Dispatch进行处理-->

       <servlet-name>spring</servlet-name>

       <url-pattern>/messagebroker/*</url-pattern>

    </servlet-mapping>

 

   <servlet>

   <!-- 配置rdsservletrds就是(remote data Service),flexbuilder

   通过rds服务获取到服务端的可用接口描述-->

       <servlet-name>RDSDispatchServlet</servlet-name>

       <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>

       <init-param>

           <param-name>useAppserverSecurity</param-name>

           <param-value>false</param-value>

       </init-param>

       <init-param>

          <param-name>messageBrokerId</param-name>

          <param-value>_messageBroker</param-value>

      </init-param>

       <load-on-startup>10</load-on-startup>

   </servlet>

   

   <servlet-mapping id="RDS_DISPATCH_MAPPING">

   <!-- RDS分发器映射-->

       <servlet-name>RDSDispatchServlet</servlet-name>

       <url-pattern>/CFIDE/main/ide.cfm</url-pattern>

   </servlet-mapping>

</web-app>

简单解释:web.xml中配置了Spring的Dispatch,在tomcat启动时会根据web.xml中描述的Spring 的Dispatch创建Spring的上下文,而且在默认情况下,tomcat会寻找与web.xml在同一目录下的,以Spring Dispatch名字为前缀,以-servlet.xml为后缀的Spring的配置文件。而RDS仅是在flex客户端开发过程中使用,在真正的程序运行时没什么用途(如果你需要为别人提供远程编程接口的支持,你需要提供rds的配置),flex客户端可以通过rds获取服务的可用外部调用和对象。

最后,web.xml要放在WEB-INF目录下。

3.2.Spring环境的配置文件

根据3.1中的解释,需要在WEB-INF目录下创建Spring的配置文件,名字叫spring-servlet.xml,这个文件主要保证了提交来的请求再次转交给哪个类进行处理。配置文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

   xmlns:security="http://www.springframework.org/schema/security"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xmlns:flex="http://www.springframework.org/schema/flex"

   xmlns:context="http://www.springframework.org/schema/context"

   xsi:schemaLocation="

      http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd

      http://www.springframework.org/schema/securityhttp://www.springframework.org/schema/security/spring-security-3.0.xsd

      http://www.springframework.org/schema/flex

      http://www.springframework.org/schema/flex/spring-flex-1.0.xsd

      http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd">

 

   <!-- 这句话说明了类中通过annotation进行配置的,Spring启动时需要扫描指定的包-->

   <context:annotation-config/>

   <context:component-scan base-package="com.guan.webTest"/>

   <!-- 这句话配置了flex的messageBroker,Spring会将与flex相关的请求提交给这个messageBroker -->

   <flex:message-broker>

      <flex:message-service

          default-channels="my-amf" />

   </flex:message-broker>     

</beans>

简单的解释:Spring启动时会扫描指定的包,并创建相应的类的对象。Spring还会创建一个messageBroker,并将接受到的flex相关的请求都提交给这个MessageBroker进行处理。在默认情况下,flex的配置文件会放在Spring配置文件相同目录下的一个名字叫flex的文件夹下,并且主配置文件名字为services-config.xml。

3.3.     Flex相关的配置文件

与flex相关的配置文件有四个,分别是services-config.xml、remoting-config.xml、proxy-config.xml和messaging-config.xml。一般情况下都会使用service-config.xml和remoting-config.xml。

下面给出service-config.xml的配置信息

<?xml version="1.0" encoding="UTF-8"?>

<services-config>

   <services>

   <!-- 包含了remoting-config.xml的内容-->

       <service-include file-path="remoting-config.xml" />

    </services>

    

    <!-- 使用默认的安全配置 -->

   <security/>

   

   <!-- 定义flex通信的通道-->

   <channels>

       <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">

       <!-- 注意这个endpoint很重要,在flex远程访问的时候必须按照如下地址进行访问-->

           <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf"class="flex.messaging.endpoints.AMFEndpoint"/>

       </channel-definition>     

   </channels>

</services-config>

简单解释,service-config.xml是flex的主配置文件,在这个文件中可以引入其他配置文件。在这个文件中定义了通信需要的通道(amf:Action messageformat)简单的说amf就是一种压缩格式,通过endpoint指定通道,并解压缩。

 

下面看看remoting-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- 定义服务,并设置参数 -->

<service id="remoting-service"

   class="flex.messaging.services.RemotingService">

   <!-- 定义Adapter,将请求转换为java的对象-->

   <adapters>

       <adapter-definition id="java-object"

       class="flex.messaging.services.remoting.adapters.JavaAdapter"

       default="true"/>

   </adapters>

 

   <!-- 服务的默认通道,这个通道是在service-config.xml中定义的-->

   <default-channels>

       <channel ref="my-amf"/>

    </default-channels>

</service>

简单解释:这里定义了flex的服务,并指明要将请求转换成java对象,并使用默认的通道。

 

3.4.总结整个流程

Flex客户端在编写代码的时候需要获取服务端可使用的接口,这些接口是RDS在服务端运行时提供的(如果您想为您的客户提供更加灵活的使用方式,向外部提供编程接口,RDS是个不错的选择),RDS在web.xml文件中进行配置。当整个服务搭建完成后,flex客户端向服务器提交请求时,先将请求以amf的格式进行压缩通信,并指定通信的地址是/amf,这样tomcat接受到这个请求,发现请求要提交给Spring的Dispatch来处理(Spring的Dispatch要在web.xml中进行配置),于是提交给Spring进行处理,Spring根据配置文档中描述的messageBroker,将请求提交给服务端默认的通道(amf,MessageBroker在Spring的配置文档中配置),消息提交给默认的通道(amf通道在service-config.xml中定义),通道对内容解压,并与具体的java类进行映射(通过Adapter,Adapter在remoting-config.xml中定义)。这样就完成了Flex的请求转换成具体类对象的请求了。

整个文档结构

Spring <wbr>flex <wbr>搭建服务 <wbr>之 <wbr>编程环境配置和我的第一个程序(第二章,第一节)

Spring <wbr>flex <wbr>搭建服务 <wbr>之 <wbr>编程环境配置和我的第一个程序(第二章,第一节)

1.      测试的java代码

下面定义一个简单的服务,就是接收一个用户的名字,然后反馈欢迎信息。

package com.guan.myFirstFlexSpringService;

 

import org.springframework.flex.remoting.RemotingDestination;

import org.springframework.flex.remoting.RemotingInclude;

import org.springframework.stereotype.Service;

 

@Service

@RemotingDestination

public class SpringService {

   @RemotingInclude

   public String sayHello(String name)

   {

      return "hello "+name+" to flex world !";

   }

}

 

代码很简单,不过需要用flex的一些标记,这样Adapter知道需要将请求转换成哪些类的对象,并调用哪些方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值