在分享這幾種配置之前,先簡單的介紹一下需要用到的一些資源。
1、 MyEclipse+Flex 插件(官網下載)
2、 Tomcat6.0作為服務器(官網下載)
3、 用 BlazeDS(免費)代替 LCDS(收費) :沒錢啊,只能先使用免費的了。從 Adobe
官方網站上下載下來,將 blazeds.war、ds-console.war、samples.war 三個文件放在
tomcat的webapps目錄下。
Flex+Java配置
第一種: Java工程和 Flex 工程獨立,這種方式也是很多人使用的方式, Flex程序員和 Java
程序員相互獨立的工作,這種方式網上有很多的資料,在這里就不再 贅述了。
第二種:Flex工程加入 Java 元素
1、 切換到 Flex視圖,新建 Flex project,如下圖

說明: Java source folder 就是你自己 java業務源碼存放的根目錄,在 FB3 里, LCDS
項目旨在將 Java J2ee 項目和 FlexLcds 項目混合。

當然如果你不選擇 combined 兩個在一起,那么就麻煩些:要么你再單獨新建一個
Flex 項目,而這個項目只寫 java代碼。要么再建一個J2ee工程寫 java代碼,而這

因為我們是要 java 和 flex結合,所
以在服務器選擇上我們選擇 J2EE

存放java類的源文件,我們的目的
就是Flex和 java在一個工程里,所
以我們這里選擇上
個項目只寫 Flex 代碼,但最后要把 Java 編譯后的 class 文件放到這個項目下的
webroot\web-inf\classes 目錄中。即不管怎樣,最后發布時,java 編譯后的 class
文件必須和 lcds 部署的項目在一起。
2、 點擊Next,配置 J2EE服務器,如下圖

說明:Target runtime 實際上沒什么用(后來我刪除了配置文件里的對應信息,也
沒問題),但是不指定就不能繼續,如果這里顯示的是<none>那么就新建一個
Tomcat 的runtime,簡單的只需要指定tomcat 的安裝目錄即可。

Content folder 實際上就是最終編譯后的容器目錄,因此,BlazeDS 的 blazeds.war
文件將會發布到 該目錄 下的 web-inf 下的 flex 目錄中。同時因為教程采用的是
MyEclipse,他默認的就是發布 WebRoot 里的內容,為了自動化,因此這里改為了
WebRoot(這也是 java 開發的習慣)

Flex WAR file 指的是安裝了 lcds 后的 flex.war 文件的路徑,但是在這里我們采用
的是BlazeDS來取代 lcds,所以這里設置的是 blazeds.war的路徑。

Compilation options 指定了 flex 文件的編譯方式,選擇推薦的在 FlexBuilder 里編
譯吧,雖然開發時多耗點時間,但是在發布后不會占用服務器的編譯處理時間,對
用戶來說是有好處的。

Output folder 指的是 Flex 編譯后的 swf 和 html 等文件存放的路徑,這里改為了
WebRoot,意思是發布到根目錄就可以了。當然你可以根據你的需要和習慣自行設
置其他的路徑

因為我們采用的 BlazeDS,所
以這里要設置 BlazeDS 的路

這里我們可以自定義輸出路徑,
一般情況下設置成根目錄
WebRoot 就可以了
3、 點擊下一步,采用默認的配置就可以,點擊完成,該工程就建立完成。下圖為該工
程的目錄結構

4、 讓它變成 web工程由MyEclipse發布吧


Flex 文件的源文件夾Java 源文件夾自動生成的flex 的配置文件
Flex 編譯后發布的文件。我們發布在根目錄下


點擊Finish,現在我們的工程的圖標變成了 J2EE Web 工程了,這意味著,你可以


注意,不要點的太快了,要把這里的
對號勾掉,這樣就不會覆蓋 BlazeDS
創建的 web.xml 用MyEclipse來發布它或者添加更多容器,比如hibernate、spring等

5、 工程建好以后,你可以通過右鍵—>屬性來進行更多的設置。

6、 這樣一個 Flex+Java的工程就建立完成。
7、 編寫例子,測試在介紹完第三種方式以后統一介紹。

第三種:由 Web project反向加入 Flex,也就是Java+Flex
1、 先建立一個 web工程:flexweb。(略)
2、 向flexweb 工程手工添加 Flex需要的元素。
1)首先將 BlazeDS需要的jar文件拷到工程的 lib 目錄下。可以將上面建的那個 flex
工程的 lib下的jar文件拷到該工程下的 lib目錄下。
2)然后要加入 Flex BlazeDS需要的配置文件。在 WEB-INF下新建一個名為 flex 的文
件夾,然后將我們上面建立的那個 firstFlex 該文件夾下的四個 xml 文件拷到該文件
夾下。
3)最后,修改 web.xml 文件,加入 Flex 的配置。做法一個簡單的把上面我們新建
的那個 flex工程的web.xml的部分代碼拷過來。

(注意:這樣會出錯,可以把

<web-app version="2.4"
xmlns="
http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

改為:<web-app>)(本人提示:這里經本人測試,并不需要這樣更改,本人的測試環境為Eclipse3.4+MyEclipse7.5,不排除在此版本前不需要做更改)


<context-param>
<param-name>flex.class.path</param-name>

<param-value>/WEB-INF/flex/hotfixes,/WEB-INF/flex/jars</param-val
ue>
</context-param>

<!-- Http Flex Session attribute and binding listener support -->
<listener>

<listener-class>flex.messaging.HttpFlexSession</listener-class>
</listener>

<!-- 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>

<servlet-mapping>
<servlet-name>MessageBrokerServlet</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
3、 將該工程發布到tomcat下,并啟動 tomcat。(注:一定要啟動tomcat,因為在后面
的設置中,它要驗證工程的路徑)
4、 然后在該工程上右鍵?Flex Project Nature?Add Flex Project Nature



5、 設置完成后,會發現 web工程的目錄結構已經發生了改變,如下圖。
我們發現以這種形式建立的工程的目錄結構和第二種方法有少許的不同,flex 的
mxml文件默認的放在 src文件夾中,和java文件共用一個目錄。并且沒有像上一個
工程那樣自動的編譯出可運行的文件。

配置服務器路徑
配置正確的顯示
建議不要修改這里的配置

6、 如果你對這個目錄結構不太滿意,還想讓 flex 的文件放在 flex_src 目錄下,別急,
我們可以通過右鍵?屬性來設置。如下圖

在這里你可以重新設置你的 flex源文件夾和輸出目錄
7、 配置 flex 默認的 sdk。這樣配置完,還不行,程序可能還不能正常地運行,還需要
配置他使用的 sdk。如下圖

8、 馬上就大功告成了,讓我們來寫個程序測試一下吧。
1)新建一個 java類:Hello.java
package com;

public class Hello {
public String hello(String name){
System.out.println("flex調用我了,真好~~~~");
return "hello "+name;
}
}
2)為flex配置這個要調用的對象,修改WEB-INF/flex下remoting-config.xml
加入:
<destination id="hello">
<properties>
<source>
com.Hello
</source>
</properties>
</destination>

3)編寫一個Flex程序
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=" layout="absolute">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;

function gg(evnet:ResultEvent):void{
var ff:String = evnet.result as String;
ggg.text = ff;
}

function remotingSayHello():void{
var sname:String = nameInput.text;
h.hello(sname);
}
]]>
</mx:Script>

<mx:RemoteObject destination="hello" id="h"
result="gg(event)"
endpoint="
http://localhost:8080/flexweb/messagebroker/amf" >

</mx:RemoteObject>


<mx:TextArea id="ggg" x="109" y="122"/>

<mx:Button label="say hello" click="remotingSayHello();"
x="144" y="193"/>
<mx:TextInput id="nameInput" x="109" y="73"/>
<mx:Label text="name" x="47" y="75"/>
</mx:Application>
4)重啟tomcat,運行flexweb.mxml.
第三種方法,在編譯完后,訪問網頁會出現 404 異常。具體原因不詳。但是它仍會編譯出
一個 swf文件,訪問這個 swf 即可。而第二種方式可以編譯出一個 html 文件。訪問一下會出
現一下界面:
輸入 dfdff,則輸出 hello dfdff。說明調用 java 類成功。不信我們可以看看 java
類在控制臺上的打印。

配置成功,高興吧,o(∩_∩)o…哈哈。
如果用 lcds,則不需要預編譯,可以直接訪問 mxml 文件,lcds 會動態編譯返回結果。(本人提示:其實你可以通過在上面配置中的flex輸出目錄中訪問其html文件例如:http://127.0.0.1:8080/xxx/xxx_debug/xxx.html

解決:

倒數第11行的404 異常,我對比第二種和第三種發現第三種漏了


這個文件夾,所以解決辦法:把漏的文件夾整個從第二種拷一份到項目中、刷新,一定要刷新到到出現

這個文件夾有這些內容,才可以成功。

注:文章中出現的“本人提示”是轉載者,不是原作者。
(本人提示:對于第三種方式整合,建議其需要修改的文件全從第二種拷貝,這樣能避免一個status404錯誤)。