- 浏览: 1357141 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (4)
- Struts1 (16)
- Spring (9)
- Hibernate (5)
- AJAX (16)
- MS Server (9)
- Oracle (35)
- 测试技术 (5)
- 其他 (37)
- JSF (1)
- EJB (5)
- ASP.NET (9)
- iBATIS (5)
- Struts Spring Hibernate (2)
- HTML (12)
- Eclipse使用 (5)
- 设计模式 (5)
- JSP (32)
- 正则表达式 (2)
- 服务器 (12)
- Java基础 (48)
- MySQL (4)
- 面试 (22)
- UML (1)
- 数据结构 (3)
- Ant (2)
- 规范 (4)
- JavaScript (29)
- 软件使用及技巧 (25)
- PHP (1)
- DWR (3)
- FreeMarker (1)
- ExtJs (17)
- JFreeChart (9)
- Reports (2)
- JavaException (1)
- Java Mail (1)
- Flex (9)
- 异常 (12)
- Log4j (2)
- WebService (1)
- jQuery (1)
- Sybase (2)
- myeclipse_plugin (2)
- Linux (5)
- jbpm (2)
- SCM (1)
- mongoDB (1)
最新评论
-
lihua2008love:
<typeAlias alias="User& ...
IBATIS简单操作 -
lihua2008love:
...
关于项目框架设计的一点学习 -
c_jinglin:
我使用<OBJECT CLASSID="cls ...
这就是个静态页面通过js控制mscomm对某com设备进行访问的例子. -
zlbjava:
赞,用了还不错
java获取请求的ip地址,并解析ip所属地区 -
完美天龙:
cs842813290 写道楼主,我明白的地方:在链表已有N个 ...
JAVA实现双向链表
Using Flex with Spring
UPDATE (1/12/2007): I put together a Tomcat-based Test Drive Server that includes the samples described below running out-of-the box. Read this post for more info.
What is Spring?
Spring is one of the most popular Java frameworks. The foundation of the Spring framework is a lightweight component container that implements the Inversion of Control (IoC) pattern.
Using an IoC container, components don’t instantiate or even look up their dependencies (the objects they work with). The container is responsible for injecting those dependencies when it creates the components (hence the term “Dependency Injection” also used to describe this pattern).
The result is looser coupling between components. The Spring IoC container has proven to be a solid foundation for building robust enterprise applications. The components managed by the Spring IoC container are called Spring beans.
The Spring framework includes several other modules in addition to its core IoC container. These modules are not covered in this document even though we will be using the Spring JDBC abstraction framework in examples 2 and 3 below. More information on the Spring framework can be found at http://www.springframework.org.
What is Flex?
Flex provides a complete solution for building Rich Internet Applications. The Flex programming model is made of:
- ActionScript, an ECMAScript compliant, object-oriented programming model. With some syntactical differences, ActionScript looks and feels similar to Java, and supports the same object-oriented constructs: packages, classes, inheritance, interfaces, strong (but also dynamic) typing etc.
- MXML: an XML-based language that provides an abstraction on top of ActionScript, and allows parts of an application (typically the View) to be built declaratively.
- An extensive set of class libraries. The online API documentation is available here in a Javadoc-like format.
The Flex source code (.mxml and .as files) is compiled into Flash bytecode (.swf) that is executed at the client-side by the Flash virtual machine using a Just-In-Time compiler.
A complete discussion of Flex is beyond the scope of this document. You can find more information at http://www.adobe.com/products/flex.
How does Flex access back-end systems?
When writing Flex applications, you can access back-end systems using four different strategies:
- You can use the HTTPService component to send HTTP requests to a server, and consume the response. Although the HTTPService is typically used to consume XML, it can be used to consume other types of responses. The Flex HTTPService is similar to the XMLHttpRequest component available in Ajax.
- You can use the WebService component to invoke SOAP-based web services.
- You can use the RemoteObject component to directly invoke methods of Java objects deployed in your application server, and consume the return value. The return value can be a value of a primitive data type, an object, a collection of objects, an object graph, etc. In distributed computing terminology, this approach is generally referred to as “remoting”. This is also the terminology used in Spring to describe how different clients can access Spring beans remotely.
- In addition to the RPC-type services described above, the Flex Data Management Services provide an innovative and virtually code-free approach to synchronize data between the client application and the middle-tier.
In this document, we focus on the Remoting (3) and Data Management Services (4) approaches described above because they enable the tightest integration with Spring. There is no need to transform data, or to expose services in a certain way: the Flex application works directly with the beans registered in the Spring IoC container.
How does Flex access Spring beans?
So, if Flex clients can remotely access Java objects, and if Spring beans are Java objects, aren’t we all set and ready to start accessing Spring beans from Flex clients? Almost… There is one simple element to configure.
The whole idea behind Spring IoC is to let the container instantiate components (and inject their dependencies). By default, however, components accessed remotely by a Flex client are instantiated by Flex destinations at the server-side. The key to the Flex/Spring integration is therefore to configure the Flex destinations to let the Spring container take care of instantiating Spring beans. The Flex Data Services support the concept of factory to enable this type of custom component instantiation. The role of a factory is simply to provide ready-to-use instances of components to a Flex destination (instead of letting the Flex destination instantiate these components itself).
The supporting files available with this document include a factory class (SpringFactory) that provides Flex destinations with fully initialized (dependency-injected) instances of Spring beans. Note: The SpringFactory was developed by Jeff Vroom (Flex Data Services architect) and is also available on Adobe Exchange.
The remaining of this article describes how to configure your web application to use Flex and Spring, how to configure the Spring Factory, and how to put the pieces together and start invoking Spring beans from Flex applications.
Setting Up your Web Application to Use Flex and Spring
Step 1: Install the supporting files
- Download flex-spring.zip here
- Expand flex-spring.zip
flex-spring.zip includes the Spring factory as well as the supporting files for the examples below.
Step 2: Install Flex Data Services
To use the Remoting and Data Management Services data access strategies described above, you need to install the Flex Data Services. If you haven’t already done so, you can download the Flex Data Services here, and follow the installation instructions.
The installation process will install three web applications (flex, samples, and flex-admin). You can use either the flex or samples web application to run the examples below.
You can read more information on the installation process here: http://www.adobe.com/support/documentation/en/flex/2/install.html#installingfds2
Step 3: Install Spring
Note: A complete discussion of the Spring installation process is beyond the scope of this article. Refer to http://www.springframework.org for more information. The steps below describe a basic configuration that is sufficient for the purpose of this article.
- Download the Spring framework (version 2.0) at http://www.springframework.org/download (the version without dependencies is sufficient to complete the examples in this article).
Note: The examples below have been developed and tested using Spring 2.0. However the integration approach described in this document (and the SpringFactory class) should work fine using Spring 1.2.8 (some of the examples might not work because they use Spring 2.0 features). - Expand the downloaded file
- Locate spring.jar in the dist directory and copy it in the {context-root}\WEB-INF\lib directory of your web application
- Modify the web.xml file of your web application. Add the context-param and listener definitions as follows:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
Step 4: Register the Spring Factory
- Copy SpringFactory.class and SpringFactory$SpringFactoryInstance.class from flex-spring-sdk\bin\flex\samples\factories to {context-root}\WEB-INF\classes\flex\samples\factories
- Register the Spring factory in {context-root}\WEB-INF\flex\services-config.xml:
<factories> <factory id="spring" class="flex.samples.factories.SpringFactory"/> </factories>
Example 1: Mortgage Calculator Using Flex Remoting
This first application is intentionally simplistic in its functionality to provide an uncluttered example of wiring Spring beans together and invoking them from a Flex application.
Step 1: Copy the application files
- Copy RateFinder.class, SimpleRateFinder.class, and Mortgage.class from flex-spring-sdk\bin\flex\samples\spring\mortgage to {context-root}\WEB-INF\classes\flex\samples\spring\mortgage
- Copy mortgage.mxml from flex-spring-sdk\flex\mortgage to {context-root}\mortgage
Step 2: Register Spring Beans
- Before registering the Spring beans for this application, open RateFinder.java, SimpleRateFinder.java and Mortgage.java in flex-spring-sdk\src\flex\samples\spring\mortgage to familiarize yourself with the source code. Notice that Mortgage has a dependency to a RateFinder object. Mortgage doesn’t instantiate a RateFinder object itself, doesn’t lookup up for a RateFinder object, and doesn’t even know the exact type of the object it will be dealing with (RateFinder is an inteface). An instance of a class implementing the RateFinder interface will be injected by the container (using the setRateFinder method) when it instantiates the component.
- If it doesn’t already exist, create a file named applicationContext.xml in {context-root}\WEB-INF.
- Register the rateFinderBean and mortgageBean beans in applicationContext.xml as follows:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="rateFinderBean" class="flex.samples.spring.mortgage.SimpleRateFinder"/> <bean id="mortgageBean" class="flex.samples.spring.mortgage.Mortgage"> <property name="rateFinder" ref="rateFinderBean"/> </bean> </beans>
Notice that in the mortgageBean definition, we tell the container how to inject the rateFinder dependency: the rateFinder property is mapped to rateFinderBean which defines an instance of the SimpleRateFinder class.
Step 3: Configure the Flex Remoting Destination
- Open remoting-config.xml in {context-root}\WEB-INF\flex.
- Add a mortgageService destination as follows:
<destination id="mortgageService"> <properties> <factory>spring</factory> <source>mortgageBean</source> </properties> </destination>
Notice that we use the spring factory defined above (see “Register the Spring Factory”), and we provide the name of the Spring bean as defined in applicationContext.xml as the source.
Step 4: Run the Client Application
- Open {context-root}\mortgage\MortgageCalc.mxml in a code editor to familiarize yourself with the application. Notice that the RemoteObject destination is the mortgageService destination defined above.
- Open a browser, access http://host:port/context-root/mortgage/MortgageCalc.mxml, and test the application: Enter a loan amount and click “Calculate” to get the monthly payment for a 30 year mortgage.
Note: that there is a delay the first time you access an application in this manner. This is because we are using the web compiler which compiles your application into bytecode the first time it is accessed (similar to the JSP compilation model). Subsequent requests to the same application will be much faster since the application is already compiled. In a production environment, you would typically deploy applications that have already been compiled using the Flex compiler available as a command-line utility or fully integrated in FlexBuilder (the Eclipse-based development environment for Flex).
Depending on your configuration, you may need to increase the heap size of your application server’s JVM to use the web compiler. This would not be required in a production environment since you typically don’t use the web compiler. If you get a java.lang.OutOfMemoryError exception while trying to access a sample for the first time, you must increase your heap size. Alternatively, you can compile the application using FlexBuilder or the command line compiler.
Example 2: Store/Inventory Management using Flex Remoting
This second example is more sophisticated and includes database connectivity. To keep the application simple and avoid dependencies on other products or frameworks, the Spring JDBC abstraction framework is used to access the database. You could use the Spring support for ORM data access (using Hibernate, JDO, Oracle TopLink, iBATIS, or JPA) as an alternative: the specific Spring data access strategy you choose has no impact on the Flex/Spring integration. We use an embedded HSQLDB database: the only installation requirement is to copy the HSQLDB driver in your web application classpath (see below). The application has two modules: a database maintenance module, and a customer-facing product catalog with filtering capabilities.
Step 1: Copy the application files
- Copy hsqldb.jar to {context-root}\WEB-INF\lib. You can download the hsqldb driver at http://www.hsqldb.org/.
- Copy ProductDAO.class, SimpleProductDAO.class, SimpleProductDAO$1.class, and Product.class from flex-spring-sdk\bin\flex\samples\spring\store to {context-root}\WEB-INF\classes\flex\samples\spring\store
- Copy admin.mxml, ProductForm.mxml, store.mxml, Thumb.mxml, AnimatedTileList.as, Product.as, logo.jpg, store.css and the pic directory from flex-spring-sdk\flex\store to {context-root}\store
Step 2: Register Spring Beans
- Before registering the Spring beans for this application, open ProductDAO.java, SimpleProductDAO.java and Product.java in flex-spring-sdk\src\flex\samples\spring\store to familiarize yourself with the source code. Notice that SimpleProductDAO extends org.springframework.jdbc.core.support.JdbcDaoSupport. JdbcDaoSupport has a dependency to a javax.sql.DataSource object (javax.sql.DataSource is an interface).
- Register the dataSource and productDAOBean beans in applicationContext.xml as follows:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> <property name="url" value="jdbc:hsqldb:/flex-spring-sdk/db/store"/> <property name="username" value="sa"/> <property name="password" value=""/> </bean> <bean id="productDAOBean" class="flex.samples.spring.store.SimpleProductDAO"> <property name="dataSource" ref="dataSource"/> </bean>
Note: If you didn’t unzip flex-spring-sdk in your root directory, adjust the JDBC url accordingly.
Step 3: Configure the Flex Remoting Destination
- Open remoting-config.xml in {context-root}\WEB-INF\flex.
- Add the productService destination as follows:
<destination id="productService"> <properties> <factory>spring</factory> <source>productDAOBean</source> </properties> </destination>
Step 4: Run the Client Application
Test the database maintenance module:
- Open {context-root}\store\admin.mxml in a code editor and familiarize yourself with the application.
- Open a browser, access http://host:port/context-root/store/admin.mxml, and test the application.
Test the store module:
- Open {context-root}\store\store.mxml in a code editor and familiarize yourself with the application.
- Open a browser, access http://host:port/context-root/store/store.mxml, and test the application.
Example 3: Data Management Services
In addition to the RPC services used in examples 1 and 2 above, the Flex Data Management Services provide an innovative and very productive approach to synchronize data between the client and the middle-tier. The Flex Data Management Services consist of a client-side API and server-side services:
- At the client-side, "managed objects" keep track of changes made to the data, and notify the back-end of these changes. You don’t have to keep track of changes made to the data, nor do you have to invoke remote services to notify the back-end of the changes (create, update, delete) made at the client side.
- At the server-side, the Data Service receives the list of changes and passes it to your server-side persistence components. The Data Service also pushes the changes to other clients.
This application provides an example of using the Flex Data Management Services with the Spring IoC container.
Note: The Flex Data Management Services leverage the Java Transaction API (JTA). If you are using Tomcat, or another servlet container that doesn’t provide a full implementation of the J2EE stack, you have to install a JTA implementation such as JOTM to run this example. Click here for more information.
Step 1: Copy the application files
- Copy ProductAssembler.class from flex-spring-sdk\bin\flex\samples\spring\store to {context-root}\WEB-INF\classes\flex\samples\spring\store
- Copy dms.mxml and Product.as from flex-spring-sdk\flex\dms to {context-root}\dms
Step 2: Register Spring Beans
- Open ProductAssembler.java in a code editor. Notice that ProductAssembler has a dependency to a ProductDAO object.
- Register the productAssemblerBean in applicationContext.xml as follows:
<bean id="productAssemblerBean" class="flex.samples.spring.store.ProductAssembler"> <property name="productDAO" ref="productDAOBean"/> </bean>
Step 3: Configure the Flex Data Management Services Destination
- Open data-management-config.xml in {context-root}\WEB-INF\flex.
- Add the product destination as follows:
<destination id="product"> <adapter ref="java-dao" /> <properties> <source>productAssemblerBean</source> <factory>spring</factory> <metadata> <identity property="productId"/> </metadata> </properties> </destination>
Step 4: Run the Client Application
- Open {context-root}\dms\dms.mxml in a code editor and familiarize yourself with the application.
- Open a browser, access http://host:port/context-root/dms/dms.mxml, and test the application.
发表评论
-
Adobe Photoshop CS4 激活序列号
2009-08-12 19:02 18881330-1676-5286-1689-1584-1943 -
flex3+blazeds+spring+hibernate整合小结
2008-10-13 13:16 3438近来flex盛行,因此这两天也借了本书看了两天,发觉作为非页 ... -
采用Cairngorm的开发步骤
2008-10-07 22:46 13911、编写控制器 package com.forbeauty.s ... -
Cairngorm
2008-10-07 22:43 2294什么是Cairngorm Cairngorm微架构是一个轻量级 ... -
43个热门Flex和ActionScript 3.0 APIs,技巧和工具
2008-10-07 21:25 1504Sean Moore Bio 说道:秋天又一次来临了,是时候 ... -
使用BlazeDS实现Java和Flex通信
2008-09-14 17:58 2773BlazeDS是一个基于服务器的Java 远程控制(remo ... -
Flex+Java Servlet文件上传实例
2008-09-14 17:47 3057资源都是来自网上。本实例将展示使用Flex和java serv ... -
使用Flex,Java,Json更新Mysql数据
2008-09-14 17:41 1569使用Flex,Java,Json更新Mysql数据【1】 ht ...
相关推荐
博文链接:https://xiaotian-ls.iteye.com/blog/229194
flex与spring集成详解
这些示例涵盖了从简单的数据绑定到复杂的业务流程,让读者逐步掌握Flex与Spring集成的技巧。 总的来说,《Pro Flex on Spring》是一本实用的指南,适合有一定Java和Flex基础的开发者,想要提升RIA开发能力的人群。...
在进行Flex与Spring集成的过程中,经常会遇到配置上的问题。例如,在配置文件`services-config.xml`中设置URI时,可能会遇到以下情况: **问题描述:** 在`services-config.xml`中设置URI为: ```xml ...
虽然这并非Flex与Spring集成的直接部分,但考虑到多框架集成的场景,`web.xml`中还配置了Struts2的FilterDispatcher,用于处理与Struts2相关的请求。 ### 实际应用中的注意事项 - **兼容性问题**:确保Flex版本...
- **Flex与Spring集成**:Flex与Spring之间的通信通常通过HTTPService或WebService组件完成,这些组件可以调用Spring的远程服务接口(如基于HTTP的RESTful服务或基于SOAP的Web服务)。Spring-BlazeDS Integration...
《使用Flex与Spring集成开发详解》 在现代Web应用程序开发中,Flex作为一款强大的富互联网应用(RIA)开发框架,以其丰富的用户界面和强大的交互能力备受开发者青睐。与此同时,Spring框架作为Java企业级应用的事实...
"FlexSpring" 文件夹可能包含了Spring服务端的源代码,包括Spring配置文件(如applicationContext.xml),定义了Bean的实例化、依赖注入以及服务接口和实现。此外,还有可能包含Java控制器类,它们是Spring MVC的一...
描述中提到的“flex和spring集成分页”是指将Flex客户端与Spring框架结合,实现服务器端数据的分页展示。Spring是一个广泛使用的Java企业级应用开发框架,提供IoC(Inversion of Control)容器、数据访问、事务管理...
要将FLEX与Spring集成,我们需要使用Spring BlazeDS Integration库。BlazeDS是Adobe提供的一个免费服务器端组件,它提供了与FLEX客户端进行AMF(Action Message Format)通信的能力。通过BlazeDS,FLEX应用可以直接...
5. Flex与Spring集成:为了使Flex客户端能够与Spring服务通信,通常会使用Spring BlazeDS Integration项目。BlazeDS是Spring提供的一个开源项目,提供了一个轻量级的HTTP/HTTPS服务器,用于在Flex客户端和Spring应用...
在Flex与Spring集成的环境中,Flex作为用户界面展示层,负责与用户进行交互。BlazeDS作为中间层,它提供了AMF(Action Message Format)协议,使Flex能够与Spring管理的Java对象进行高效的数据交换。Spring作为业务...
Flex Blazeds Spring集成是将Adobe的Flex前端技术与Spring框架后端服务相结合的一种开发模式。这个DEMO展示了如何在Flex客户端应用中利用Spring框架来管理和服务通信,从而实现更高效、灵活的分布式应用程序。 Flex...
Flex与Spring整合是将Adobe Flex前端技术和Spring后端框架相结合,实现富互联网应用程序(Rich Internet Applications,RIA)的开发。这种结合使得开发者可以利用Flex的交互性和表现力,以及Spring的强大企业服务...
1. **Flex 与 Spring 集成**:Spring Flex 提供了 `RemotingDestination` 和 `MessageBroker`,使得 Flex 客户端可以通过 AMF(Action Message Format)协议与 Spring 上下文中的bean进行交互。这简化了数据传输,...
描述中提到的链接指向了一篇ITEYE博客文章,尽管描述为空,我们可以假设这篇文章详细介绍了如何将Flex与Spring集成,可能包括配置、数据绑定、远程方法调用(AMF)以及如何在Flex客户端与Spring服务器之间交换数据等...
- **配置Flex与Spring的通信**:使用Spring BlazeDS Integration或Spring Web Services为Flex客户端提供与Spring服务的接口。BlazeDS是Adobe提供的一个服务器端组件,可以实现AMF(Action Message Format)协议,使...
6. **flexstoreService**:这可能是一个包含Flex与Spring集成的服务层代码的目录,其中包含Spring配置文件(如applicationContext.xml)和Java服务类,这些类通过Spring的DI容器进行实例化,并通过AMF暴露给Flex...
总结来说,"Pro Flex On Spring"这本书为我们提供了一个将Flex前端与Spring后端结合使用来构建现代企业级应用的完整蓝图。通过书中所提供的丰富知识点,开发者可以更深入地了解如何应对整合过程中的技术挑战,以及...