天天看點

flex java blazeds_Flex同Java通信--BlazeDS入門圖文詳解(上)

以前做項目時因為時間關系,囫囵吞棗狀态下完成了,現在回頭仔細研究了下究竟各種配置到底是什麼意思,起什麼作用,以一個什麼的流程來建立通過BlazeDS通信的Flex+Java程式比較合理,在程式運作時遇到那些問題時是配置的原因,又怎樣去修改配置,讓一個代碼邏輯沒有問題的程式可以正常運作,現将研究的成果記錄下來,分享+備忘。

本篇文裡主要介紹如何建立一個工程,并設定好相應的配置。

後續将介紹項目如何正确同步到Tomcat伺服器,請期待Flex同Java通信--Blazed入門圖文詳解(下)。

前期準備

本文所用軟體: Flash Builder 4.5 Plugin-in

Tomcat 7

BlazeDS 4

以上軟體官網均可下載下傳,或試用,或免費 ,或者最一了百了的方法——購買

環境搭建:

1.将Eclipse和FlashBuilder正确安裝,配置好JDK;

2.Tomcat和BlazeDS解壓,将blazeds.war檔案解壓,放到此目錄中——\Tomcat7.0.12\webapps 。

建立Flex Project工程

本文采用Flex和Java 放置在同一工程中的方式,根據向導提示建立工程,沒有什麼複雜的,稍微留心就可以,尤其是Flash Builder4.5,已經消除了之前設定某些參數無效的bug。

1. 工程基本資訊,其中FlexSDK可以根據自己的開發需要選擇;

flex java blazeds_Flex同Java通信--BlazeDS入門圖文詳解(上)

2. Java部分的設定

flex java blazeds_Flex同Java通信--BlazeDS入門圖文詳解(上)

Tips:Java source folder用于放置Java代碼的檔案夾,名稱可以根據自身習慣設定;

Target runtime 配置好的Tomcat,此處必須選一個,否則無法進行建立;

Context root用于設定将哪些URL請求通過Tomcat轉發到Web應用,此處必須與工程名相同;

Content folder 這是最終編譯後的容器目錄,blazeds.war檔案将會釋出到該目錄下的WEB-INF下的flex目錄中,此處需跟Context root 的設定一樣,

否則在使用RemoteObject與Java進行通信時會報錯,目前還沒找到原因,若有明白人,望指點一下;若開發環境使用MyEclipse,将檔案名設定為

WebContent,可以自動部署;

Output folder 用于存放Flex編譯後的swf和html等檔案存放的路徑,若為了編譯檔案的整齊,可以選擇放在Content folder\bin等一個單獨檔案夾中,

因為習慣問題我設定為一樣的;

3. Flex部分的設定

flex java blazeds_Flex同Java通信--BlazeDS入門圖文詳解(上)

Tips:Main source folder用于放置Java代碼的檔案夾,名稱可以根據自身習慣設定;

Main application file預設運作的swf對應的代碼檔案;

Output folder url程式運作的主連結;

生成的工程結構如圖所示:

flex java blazeds_Flex同Java通信--BlazeDS入門圖文詳解(上)

Flex與Java通信的配置

1.示例背景Java類

在"Demos/java_src”檔案夾下添加com.Demos.DemoServices類,其完整代碼如下: 1:package com.Demos;2:3:public class DemoServices {4: public String testRemoteServices(String var1) {5: return "Test is ok" + var1;6: }7:}

2.示例前端Flex應用

修改"Demos/flex_src”檔案夾下添加Demo.mxml檔案,其完整代碼如下:

1:<?xml version="1.0" encoding="utf-8"?>2:7: 32:33: 34: 35: 36: 37: 38:39: 40: 41: 42: 43:

3.通信配置

代碼編寫完成後,首先将"Tomcat7.0.12\webapps\blazeds\WEB-INF”檔案夾拷貝替換"Demos\Demos\WEB-INF;然後需要修改位于

"Demos\Demos\WEB-INF\flex”檔案夾中remoting-config.xml檔案,為其添加以下代碼:

1:2: 3: com.Demos.DemoServices4: 5:

Tips:id 也可以用代碼中的demoServices;

Source一定要跟Java類的名稱完全一樣,否則會報找不到類或者沒有Channel的錯誤。

擴充閱讀: