对比起以前用FlexFactory方法,让MessageBrokerServlet直接从上下文中获得Bean,整合框架更像是一种规范的Spring MVC。MessageBroker作为控制器,从Servlet中分离出来,而且现有的Integeration版本对Spring的支持更加强大。
下载整合框架的包:
BlazeDS 4.0 http://opensource.adobe.com/wiki/display/blazeds/Downloads Binary Distribution版本
Spring BlazeDS Integration 1.5.0.REALSE : http://www.springsource.org/spring-flex
Spring方面,利用myElcipse 8.0 引用自带的myEclipse库,我这里用的是Spring 3.0.
一、各种库引用
1.新建项目
File->New->Web Project。建立完毕后,给项目加上适当的Spring库支持,这里就不一一详述。
2.导入Spring BlazeDS Integeration库
Window->Preferences->Java->Build Path->User Libraries->New,输入『Spring BlazeDS Integration 1.5.0.RELEASE』。
Add JARs,加入下载好后的spring-flex-1.5.0.RELEASW文件内dist的spring-flex-core-1.5.0.RELEASE.jar
想了解具体的源代码以及说明文档,可以把其源代码以及doc也配置进去:
Source attachment可以指向src中spring-flex-core-1.5.0.RELEASE.jar解压出来的那个跟目录。
Java Doc可设为spring-flex-1.5.0.RELEASE/docs/api/
点击OK
3.加入Spring BlazeDS Integeration库引用
这里也不一一详述了。
4.加入BlazeDS的库引用
把下载后的blazes-bin-4.0那个文件解压缩后会得到一个blazeds.war,把此文件解压缩到项目的webroot目录下,覆盖原有的所有文件。
二、配置框架
下载好的BlazeDS框架会为你配置了一个名为MessageBrokerServlet的Servlet,可以在web.xml里面看见。
<!-- MessageBroker Servlet -->
<servlet>
<servlet-name>MessageBrokerServlet</servlet-name>
<display-name>MessageBrokerServlet</display-name>
<servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
<init-param>
<param-name>services.configuration.file</param-name>
<param-value>/WEB-INF/flex/services-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
由于新的Spring BlazeDS 整合框架用的是Spring MVC核心Servlet DispatcherServlet作为前端控制器,并由此控制将请求分派到适合的控制器对象(Controller)。所以,这里将此段代码移除掉,其他相关的引用也同样移除掉。
1. 配置DispathcerServlet
(这里要有相关的Spring MVC的知识。具体可以查看Spring in action 2 中的第13章《开始Spring MVC之旅》)
首先,必须为你的Spring MVC配置一个DispatcherServlet,为此,在web.xml里面加入以下配置:
<servlet>
<servlet-name>flex</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>flex</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
这里声明了一个名为flex的servlet,并将所有对/hello这个URL的请求全部交由这个DispatcherServlet进行处理。当此servlet加载后,会从根据servlet-name中的“flex”,加载一个名为flex-servlet.xml的配置文件。这里根据Spring的分解应用上下文思想,你需要为web层独立配置flex-servlet.xml文件,当然,你可以把所有的bean都堆在这个xml文件里面。这里只作使用的示范:
在WEB-INF目录下,新建一个名为flex-servlet.xml的Spring上下文。该文件的名称空间声明引用到了一些flex的名称空间,以及一些flex的schema,需要做一点修改:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:flex="http://www.springframework.org/schema/flex"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/flex
http://www.springframework.org/schema/flex/spring-flex-1.5.xsd">
</beans>
即加入两个关于flex的schema定位以及flex这个名称空间。
完成了这个修改,就可以开始配置bean了。
2.配置MessageBroker
MessageBroker是整个BlazeDS的核心,根据reference guide,你必须为你的webApplicationContext,即刚刚创建的flex-servlet.xml配置一个MessageBroker。在Spring BlazeDS Integration中,就不再是MessageBrokerServlet,而是MessageBrokerFactoryBean。它位于org.springframework.flex.core.MessageBrokerFactoryBean。而由于刚刚引入的flex的名称空间,在这个配置文件里面,可以利用标签flex:message-broker 替代这个bean的声明:
<flex:message-broker/>
这个标签等效于声明一个了名为_messageBroker的bean,类为MessageBrokerFactoryBean,从默认WEB-INF/flex这个目录下直接读取service-config.xml配置文件。也可以利用classpath这个前缀,使用ResouceLoader从当前线程中匹配services-config.xml,并读取:
<flex:message-broker services-config-path="classpath*:services-config.xml"/>
等效于
<bean id="_messageBroker" class="org.springframework.flex.core.MessageBrokerFactoryBean" >
<property name="servicesConfigPath" value="classpath*:services-config.xml" />
</bean>
那我们就直接利用第一种,即直接声明一个message-broker的tag,默认配置就可以。
3. 将DispatcherServlet的request转发的到MessageBroker控制器
有了DispatcherServlet,有了控制器,对于Spring MVC来说就缺少一个转发映射了。如果按照上述步骤,是了messagebroker的tag,那么只需要在flex-servlet.xml中加入一个bean:
<bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter"/>
这个类的说明是:
HandlerAdapter for routing HTTP messages to a Spring-managed MessageBroker.
This class is automatically registered with the application context when using the message-broker tag in the xml configuration namespace.
即默认地把所有所有http转发到message-broker tag中,其实就是等效于这样一个东西:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
/*=_messageBroker
</value>
</property>
</bean>
一个简单的映射。他会把所有/hello的这个URL的请求都发到messageBroker中去。
4.配置remoting服务
剩下的就是配置remoting-config了。
打开之前的那个service-config,为所有channel都加上一个hello路径配合转发:
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/hello/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
以前没有整合框架的时候,需要在remoting-config.xml里面配置destination,现在可以直接在context里面配置,而不用再因为忘记任何一边出错。这里声明一个简单的类名为hello:
package hello;
public class Hello {
public String sayHello(){
String hello = "hello world!";
return hello;
}
public String sayShit(){
String hello = "fuck the world!";
return hello;
}
}
<bean id="helloBean" class="hello.Hello">
</bean>
这里有两个方法,一个是标准的hellowor的,一个是天煞的f*ck the world。我只想让用户说hello,不让他乱说话,可以先这样配置:
在message-broker标签内声明一个remoting-servce:
<flex:message-broker>
<flex:remoting-service default-adapter-id="my-default-remoting-adapter"
default-channels="my-amf, my-secure-amf" />
</flex:message-broker>
然后把hello类公开:
<flex:remoting-destination destination-id="helloServ" ref="helloBean" include-methods="sayHello" exclude-methods="sayShit"/>
将sayHello变成是include-methods即可以访问,sayShit变成是exclude-methods即不可访问。
5.配置Flex
Service.as
package
{
import mx.rpc.AsyncToken;
import mx.rpc.remoting.Operation;
import mx.rpc.remoting.RemoteObject;
/**
* <b>Service类</b>
* <br>
* @author Encore
* */
public class Service
{
private var _operations:Object = new Object();
private var _operationsName:Array = ["sayHello","sayShit"];
private var _remoteObject:RemoteObject = new RemoteObject();
public function Service()
{
for each (var i:String in _operationsName){
var operation:Operation = new Operation(null,i);
_operations[i]=operation;
}
_remoteObject.operations=_operations;
_remoteObject.destination="helloServ";
_remoteObject.endpoint="http://localhost:8080/SpringTest/hello/messagebroker/amf";
_remoteObject.showBusyCursor=true;
}
public function sayHello():AsyncToken{
return (_operations["sayHello"] as Operation).send();
}
public function sayShit():AsyncToken{
return (_operations["sayShit"] as Operation).send();
}
}
}
Test.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:local="*"
creationComplete="initial(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
protected function initial(event:FlexEvent):void
{
// TODO Auto-generated method stub
call.token = service.sayShit();
}
protected function call_resultHandler(event:ResultEvent):void
{
// TODO Auto-generated method stub
trace(event.result);
}
protected function call_faultHandler(event:FaultEvent):void
{
// TODO Auto-generated method stub
trace(event.fault.faultDetail);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<local:Service id="service"/>
<s:CallResponder id="call" result="call_resultHandler(event)" fault="call_faultHandler(event)"/>
</fx:Declarations>
</s:Application>
sayShit的调用:
sayhello的调用
简单的试用到此。还可以配合Spring框架的更多功能,例如Spring Security等。之后再说吧。
- 大小: 20.1 KB
- 大小: 19.2 KB
- 大小: 19.4 KB
分享到:
相关推荐
4. **Spring Flex Maven artifact**:`spring-flex-1.0.0.RELEASE`这个文件名表明这是一个Maven构建的工件,它包含了Spring BlazeDS Integration的相关库文件,如Spring的Flex模块、相关依赖和服务端库。开发者可以...
4. **SBI(Spring BlazeDS Integration)**:这是Spring Flex的一个重要组成部分,它提供了与Adobe BlazeDS的集成,BlazeDS是Adobe提供的一个免费服务器端套件,用于在Flex和Java应用之间传递数据。 5. **Flex构建...
**Spring BlazeDS Integration** 是一个强大的技术组合,它允许开发者使用Spring框架在后端服务器上进行业务逻辑处理,同时利用Adobe Flex在前端构建富互联网应用程序(RIA)。BlazeDS是Adobe提供的一种开源服务器端...
Spring BlazeDS Integration
标题中的“Flex、Spring整合:Spring BlazeDS Integration”指的是在Java后端使用Spring框架与前端Flex应用程序进行集成的一种技术方案。BlazeDS是Adobe提供的一个开源项目,它为富互联网应用(RIA)提供了数据推送...
Spring BlazeDS Integration是Spring框架的一个组件,它提供了与Adobe Flex的无缝集成,允许后端Java服务与前端Flex客户端进行通信。这个项目demo提供了实际操作的例子,帮助开发者理解和实现Spring与Flex的结合。 ...
使用flex 4.5 + Spring 3.0 + Hibernate 3.3 + Cairngorm 2.2.1 + BlazeDS 3.3.0 + Spring BlazeDS Integration 1.0.3整合出的一个登录的小demo·
《Flex-Spring BlazeDS 整合基础架构构建详解》 在现代Web开发中,富互联网应用程序(Rich Internet Applications,简称RIA)的需求日益增长,而Flex作为Adobe提供的RIA开发框架,因其强大的图形用户界面和与服务器...
配置BlazeDS涉及到Spring上下文配置和BlazeDS配置文件(services-config.xml)。在Spring配置中,需要定义要公开的服务bean,并指定其AMF通道。在BlazeDS配置文件中,定义了通道集、目的地以及安全设置,确保数据...
本方案提供了一种集成化的开发环境,即"MyEclipse7.5+flex4+spring3.0.5+struts2.2.1+hibernate3.6.0+blazeds4.0.0.14931完美整合方案",它将多个流行的技术框架整合在一起,为Web应用程序开发提供了一个强大的平台...
在解压后的文件中,“blazeds.war”是Web应用的归档文件,遵循Java Web应用的标准WAR(Web Application Archive)格式。这个文件可以直接部署到任何支持Servlet 2.4或更高版本的Java应用服务器,如Tomcat、Jetty等。...
1. `flex-messaging-spring`:这是 Spring Flex 的核心模块,它包含 Spring 与 BlazeDS/LCDS 之间的集成,提供 Spring 上下文到 BlazeDS 发布配置的映射。 2. `spring-flex-core`:这个模块包含了处理 Flex 与 ...
5. **文档与源码**:`jetty-blazeds-7.0.0.RC6-javadoc.jar`包含了API文档,对于开发者来说,这是一个非常重要的资源,可以方便地查阅类库的使用方法和功能。而`jetty-blazeds-7.0.0.RC6-sources.jar`则提供了源代码...
将"blazeds-spring.war"和"blazeds.war"部署到你的Servlet容器中,例如Tomcat,然后通过HTTP或HTTPS访问相应的URL,以配置和测试BlazDS服务。一旦部署成功,Flex客户端就可以通过定义的Remoting或Messaging通道与...
blazeds_api.chm是最新的4.0.1版本的api,加入了索引和搜索功能。
- 将压缩包中的`blazeds.war`文件解压到Tomcat的`webapps`目录下。 - 如果Tomcat正在运行,请停止服务再重新启动以加载新部署的应用程序。 2. **配置BlazeDS**: - 在解压后的`blazeds`文件夹中,找到`WEB-INF`...
- **解压路径**: `E:\FlexLibrary\blazeds.war` #### 4. Apache Tomcat 6.0 的下载与解压 - **文件名**: `apache-tomcat-6.0.16.zip` - **解压路径**: `E:\Program Files\apache-tomcat-6.0.16` - **替代方案**: ...