J2EE環境下配置Flash Remoting
聲明:本譯文只供個人學習參考之用;本文所有權屬于webstudio所有!
如要轉載請通知本站,謝謝合作!
(一)在J2EE環境下,通過Tomact配置Flash Remoting
本教程需要的軟件:
①j2sdk-1_4_2_06-windows-i586-p
②jakarta-tomcat-5.0.19
③Flash MX 2004
④Macromedia Flash Remoting for Flash MX 2004 ActionScript 2.0
flashremoting_comp_as20-win-en.exe (16.39 MB) (http://www.macromedia.com/software/flashremoting/downloads/components/)
http://www.macromedia.com/software/flashremoting/downloads/components/
⑤Flash Remoting Components ActionScript 1.0 for Flash MX 2004 and Flash MX Professional 2004
FlashRemotingComponents-win-en.exe (5.95 MB) (http://www.macromedia.com/software/flashremoting/downloads/components/)
http://www.macromedia.com/software/flashremoting/downloads/components/
⑥Flash Remoting MX.
Flash Remoting for J2EE (http://www.macromedia.com/cfusion/tdrc/index.cfm?product=flash_remoting)
http://www.macromedia.com/cfusion/tdrc/index.cfm?product=flash_remoting
1、安裝JDK和Tomact,具體步驟見本論壇中《Flex1.5安裝教程》;
2、安裝Flash MX 2004(我用的是中文版,注意你的版本);
3、安裝FlashRemotingComponents-win-en組件。它會在你的Flash MX 2004目錄下新建一個en文件夾,這是由于我使用的Flash版本視中文版所引起的,先不用理它,繼續!
4、安裝flashremoting_comp_as20-win-en組件。好了,接下來我們要做一些改動!比較Flash MX 2004中的en和zh_cn(因為我用的是中文版,所以是這個文件夾名)文件夾中的文件,對應目錄名把zh_n沒有的en文件夾中內容都復制過來,如果整個子目錄都沒有就把它都復制過來,別手軟! J 這樣才能保證應用中不會找不到某些remoting類、方法什么的(如果你有更好的方法,不妨介紹一下)。
5、安裝flashremoting-java-win-en,在安裝過程中至少選擇下圖的選項中的Web Archive (WAR) with samples當然全部選中更好!
http://www.webstudio.com.cn/wsswf/remoting/remoting01.jpg
6、把你安裝的Flash Remoting MX目錄下的flashgateway-samples.war文件復制到Tom目錄下的webapps中;
7、找到你安裝的j2sdk1.4.2_06目錄下的lib文件夾,復制名為tools.java的文件到Tom目錄的server文件夾下的lib文件夾中,覆蓋源文件;
8、運行Tomcat目錄的下bin文件夾中的startup文件,等待服務啟動更新以后,在IE地址欄輸入
http://localhost:8080/flashgateway-samples/ 啟動Flash Remoting,如下圖所示:
http://www.webstudio.com.cn/wsswf/remoting/remoting02.gif
等待幾秒鐘后,自動帶你進入Remoting范例目錄,如下圖所示:
http://www.webstudio.com.cn/wsswf/remoting/remoting03.gif
至此,你的Remoting已經配置成功了,以后可以通過直接啟動Tomact服務來運行Remoting了!:)
(二)在J2EE環境下,通過Jrun4配置Flash Remoting
所需軟件:
Macromedia JRun 4 (http://www.macromedia.com/cfusion/tdrc/index.cfm?product=jrun)
http://www.macromedia.com/cfusion/tdrc/index.cfm?product=jrun
1、安裝Jrun4,安裝過程中設置好用戶名和口令,如下圖所示:
http://www.webstudio.com.cn/wsswf/remoting/remoting04.gif
2、Jrun4默認三個服務端口,你可以使用,當然也可以新建一個服務端口,如下圖所示:
http://www.webstudio.com.cn/wsswf/remoting/remoting05.gif
3、安裝好后,登錄,默認服務端口是8000,http://localhost:8000 即是控制平臺。點擊Create New Server按鈕(在頂行上),輸入Server名,比如myRemoting,Jrun會自動建立到這個Server的路徑,點擊Create Server,如下所示:
http://www.webstudio.com.cn/wsswf/remoting/remoting07.jpg
4、服務器將建立一個新的端口,當然如果不滿意,你可以繼續修改,如下所示:
http://www.webstudio.com.cn/wsswf/remoting/remoting08.jpg
5、點擊 Finish按鈕,將建立一個新的服務,并Jrun的servers目錄下建立一個myRemoting文件夾,如下所示:
http://www.webstudio.com.cn/wsswf/remoting/remoting09.jpg
6、由于Jrun集成了對Flash Remoting Gateway的服務,所以把flashgateway-samples.war解壓縮,并命名該文件夾為flashgateway-samples,然后flashgateway-samples文件夾放到myRemoting文件夾中,啟動myRemoting服務,鍵入http://localhost:8101/flashgateway-samples/即可啟動Remoting !開始你的Remoting之旅吧!:)
現在我們來學習一下java環境下的hello world程序!
這里我假設你參考了我第一篇文章,已經配置好你的jrun了。
1.我用的是jrun,如果你用的不是jrun那么請去看具體的相關服務器的配置信息,首先在開始->jrun4->jrun management console,點擊進入頁面之后選擇左上角的create new server創建一個新的server,取名為flashremoting,新建之后啟動這 個server,然后我們進入jrun程序的文件夾d:/jrun4(我安裝在d盤了,如果你的不是,請到相應的文件夾),雙擊進入 servers文件夾,這時你會看到jrun已經為你在這里創建了flashremoting,雙擊進入,在進入server-inf在這里我們新建一個名為classes的文件夾,大家可能已經明白了,不錯,這個文件夾就是我們放java文件的地方,下面我建立的文件夾比較多,主要是要讓大家看一下在flash里是怎么找到你要調用的java文件的,在classes文件夾下建立一個名為com的文件夾,在com文件夾下新建一個名為helloworld的文件夾,在helloworld文件夾下新建一個名為remoting文件夾(呵呵,是不是挺多的,好了文件夾就建立到這里了)
2.這里我建立的是一個javaBean程序,當然flash還能調用像ejb等別的程序,閑話少說,在remoting文件夾下新建一個TestBean.java文件,里面的代碼很少也很簡單。首先是包信息package com.helloworld.remoting;之后的然后是bean代碼
public class TestBean implements java.io.Serializable {
public String getMessage() {
return "hello world!!!";
}
}
在這里一定要注意這個(java.io.Serializable),這是不可少的,然后編譯這個文件,編譯成功之后我們的工作已經完成了,java端的工作是不是很簡單呢,呵呵!!!
3.好了,如果你已經看過我的第二篇文章,那么一會你會發現,flash調用.net程序和調用java程序的代碼很相似。首先導入所需要的類,以便flash在編譯的時候能找到他們選擇菜單欄 窗口->其他面板->公用庫->remoting,然后把RemotingClasses拖到舞臺上然后刪除(這樣RemotingClasses類就已經在我們自己的文件的庫里了),如果你想在創作中調試的話,那么你也需要把RemotingDebugClasses類拖到舞臺上然后刪除。
4.在舞臺上我們拖一個textinput組件取名為response_txt。
5.選擇第一幀,然后開啟動作面板。
6.首先我們要把導入類代碼如下:
import mx.remoting.Service;
import mx.remoting.PendingCall;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
導入之后我們就可以用相應的對象了。
7.之后首先我們要建立一個連接,代碼如下:
var flashtestService:Service = new Service("http://localhost:8101/flashservices/gateway",
null, "com.helloworld.remoting.TestBean", null, null);
這里第一個參數比較固定,請看一下你的jrun管理控制臺頁面,你會看到你的flashremoting server的端口為8101(我的是8101如果你的不是那么你要改為相對應的端口號)注意后面的應該是flashservices,而不是你的server的名字,這個比較固定,第三個參數你看到了吧,這個就是指引flash找到你的java文件的路徑,首先由于第一個參數,flash確定你調用的是flashremoting server,之后flash會指向SERVER-INF文件夾下的classes下,我們的java文件的存放的路徑是com->helloworld->remoting下,所以,首先應該寫com.helloworld.remoting,之后連接的就是java的文件名TestBean,所以這里的寫法就是com.helloworld.remoting.TestBean,好了連接完成了。
8.然后我們就要創建一個PendingCall對象去調用java的方法代碼如下:
var pc:PendingCall = flashtestService.getMessage();
這里請看一下java的代碼,不錯java里有一個getMessage方法,所以我們就要調用這個方法,來實現這個方法的功能了。
9.接下來是創建RelayResponder對象來設定從server里傳回來的值指向flash的對應的方法,代碼如下:
pc.responder = new RelayResponder(this, "getMessage_Result", "getMessage_Fault");
這里和.net的程序有點不一樣,因為.net的程序設定傳回值的方法可以隨便寫,但java默認的是和java端的方法名相同并且在其后面加一個_Result,或者_Fault,也就是getMessage_Result,和getMessage_Fault。
10.然后當然就是寫這個兩個方法了,呵呵,代碼如下:
function getMessage_Result(re:ResultEvent):Void {
response_txt.text = re.result;
}
function getMessage_Fault(fe:FaultEvent):Void {
response_txt.text = "There was a problem"+fe.fault.faultstring;
}
這里,如果連接成功或者失敗都把傳回的值顯示在response_txt里。
好了,代碼完成了,是不是很簡單,和.net的連接方式很類似呢,呵呵,還等什么,趕快測試吧,呵呵,如果出現這個問題error open url"http://localhost:8101/flashservices/gateway",那么你要注意了,看看你的防火墻,是不是禁止了flash連接了網絡。如果是的話,那么趕快改回來吧(這個問題困饒我好久哦!!!),另一個問題就是我們現在編寫的是java 的程序,所以你的環境變量一定要設定好,如果你確定你的jrun系統配置和java環境變量已經沒問題了,那么除了上面我說的問題外,就應該沒有什么問題了,good luck!!!