內容如下
- 關於Adobe Flex
- 關於Spring
- 爲什麼使用Flex和Spring
- Flex和Spring的整合
關於Flex
Adobe Flex是一套創建富客戶端應用(RIAs)的框架.Flex生成的swf文件可以直接運行在Flash Player之中。相比較基於時間軸的Flash開發,Flex框架更適合那些用傳統方式開發應用程序的開發人員。Flex應用可以使用Flex builder來開發。這套IDE是基於Eclipse平臺開發的。Action Script3語言是用來訪問數據和創建用戶接口組件的。Flex框架也用到了一種XML語言叫做MXML,它是用來簡化Flex開發和佈局的。
關於Spring
Spring是目前最受歡迎的創建企業級應用的Java框架。不像傳統的J2EE開發,Spring提供了輕量級的容器。使用Spring會使應用 的測試和開發更爲簡單。雖然Spring依賴注入的功能最出名,但是它也提供了其他服務端企業程序所需要的功能。如安全和事務處理。
爲什麼使用Flex和Spring
Flex技術本身和Java就有很強的關聯性,它提供了一個基於Eclipse的IDE和BlazeDS.BlazeDS是個基於服務端的Java 遠程調用和Web消息的一個開源的技術。有許多應用都是以Java爲後端處理的。Flex用於前端。由於Java和Flex一起頻繁的使用。人們很容易就 想到Flex和Spring的整合。有許多企業和組織已經着手開始使用Flex作爲用戶接口了。在2008年末,Spring社區已經着手Spring BlazeDS整合的項目。爲Java和Spring添加更好的Flex支持。
默認的情況下BlazeDS創建了一個服務端Java對象的實例,用它們來完成遠程對象的請求。但是這種方法並不適用於Spring.因爲整個框架 使用的服務的對象都是用Spring容器所創建的。Spring和BlazeDS的整合,Flex就可以使用Spring中的對象了。
整合Flex和Spring
爲了使用BlazeDS,服務端的Java應用應打包爲WAR文件。這部分的代碼實例是使用Eclipse來創建和編輯的。步驟如下
- 設置服務端的BlazeDS Java工程以及Spring框架。
- 在BlazeDS中配置Spring的bean
- 寫一個Flex應用去使用Spring/BlazeDS的服務。
- Eclipse3.4(J2EE版本):http://www.eclipse.org/downloads/
- Flex Builder3:http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3email&sdid=EOZPI
- Tomcat 6:http://tomcat.apache.org/
- BlazeDS:http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/
- Spring框架:http://www.springsource.org/download
- Spring BlazeDS整合:http://www.springsource.org/spring-flex
- ANTLR3.0:http://www.antlr.org/download.html
- Choose File>import
- 選擇WAR選項。指定blazedsWAR文件的位置。輸入工程名test-server
- 點擊完成
- File>New>Other
- 選擇Server>Server
- 點擊Next
- 選擇Apache>Tomcat6 Server
- 點擊Next
- 指定Tomcat的安裝位置以及JRE(5以上版本)
- 點擊Next
- 在Availble Projects list中選擇test-server
- 點擊Add添加到Configured Project list
- 點擊Finish
public class MyEntity {
private String frstName;
private String lastName;
private String emailAddress;
public String getFirstName() {
return frstName;
}
public void setFirstName(String frstName) {
this.frstName = frstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
}
Java服務接口import java.util.List;
public interface MyService {
public List<MyEntity> getMyEntities();
}
- 把Spring的庫以及Spring BlazeDS整合的庫,還有ANTLR庫文件放到項目/WEB-INF/lib下。
- 創建一個Spring配置文件。鼠標右鍵點擊WebContent/WEB-INF以及選擇New>File,文件名輸入 application-config.xml.點擊完成。配置文件內容如下。
- <? xml version = "1.0" encoding = "UTF-8" ?>
- < beans xmlns = "http://www.springframework.org/schema/beans"
- xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation ="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
- <!-- Spring Beans’s -->
- < bean id = "myService" class = "MyServiceImpl" />
- </ beans >
- <? xml version = "1.0" encoding = "UTF-8" ?>
- < web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
- xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- id = "WebApp_ID" version = "2.5" >
- < display-name > test-server </ display-name >
- < 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/application-config.xml </ param-value >
- </ init-param >
- < load-on-startup > 1 </ load-on-startup >
- </ servlet >
- <!-- Map /spring/* requests to the DispatcherServlet -->
- < servlet-mapping >
- < servlet-name > Spring MVC Dispatcher Servlet </ servlet-name >
- < url-pattern > /spring/* </ url-pattern >
- </ servlet-mapping >
- </ web-app >
- <? 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-2.5.xsd
- http://www.springframework.org/schema/flex
- http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">
- <!-- Spring Beans’s -->
- < bean id = "myService" class = "MyServiceImpl" />
- <!-- Simplest possible message broker -->
- < flex:message-broker />
- <!-- exposes myService as BlazeDS destination -->
- < flex:remoting-destination ref = "myService" />
- </ beans >
destination標籤使Spring bean變爲遠程目標。
- <? xml version = "1.0" encoding = "UTF-8" ?>
- < services-config >
- < services >
- < default-channels >
- < channel ref = "my-amf" />
- </ default-channels >
- </ services >
- < channels >
- < channel-definition id = "my-amf"
- class = "mx.messaging.channels.AMFChannel" >
- < endpoint
- url = "http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amf"
- class = "flex.messaging.endpoints.AMFEndpoint" />
- </ channel-definition >
- < channel-definition id = "my-polling-amf"
- class = "mx.messaging.channels.AMFChannel" >
- < endpoint
- url = "http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amfpolling"
- class = "flex.messaging.endpoints.AMFEndpoint" />
- < properties >
- < polling-enabled > true </ polling-enabled >
- < polling-interval-seconds > 4 </ polling-interval-seconds >
- </ properties >
- </ channel-definition >
- </ channels >
- </ services-config >
- File>New>Other
- 選擇Flex Project
- 填寫工程名稱test-flex
- 用默認的地址
- 選擇Web application(運行在Flash player)
- Application Type 選擇None
- 點擊Next
- 指定Output的文件夾。如 C:/workspace/test-server/WebContent/
- 點擊Finish
- <? xml version = "1.0" encoding = "utf-8" ?>
- < mx:Application xmlns:mx = "http://www.adobe.com/2006/mxml"
- layout = "absolute"
- creationComplete = "srv.getMyEntities()" >
- < mx:AMFChannel id = "myamf" uri = "/test-server/spring/messagebroker/amf" />
- < mx:ChannelSet id = "channelSet" channels = "{[myamf]}" />
- < mx:RemoteObject id = "srv"
- destination = "myService" channelSet = "{channelSet}" />
- < mx:DataGrid dataProvider = "{srv.getMyEntities.lastResult}" />
- </ mx:Application >
含關於Spring的東西。編寫Flex的
爲了在Flex builder中調試運行。可以做如下設置
- 右鍵點擊test-flex工程。
- 選擇Properties,之後是Flex build path
- Output Folder URL 填寫 http://localhost:8080/test-server/
- 點擊OK