java整合flex
java+flex項目整合
java+flex 2010-12-20 16:11:12 閱讀59 評論0 ??字號:大中小?訂閱
第一種:javaproject和flexproject獨立 這樣的方式也是非常多人使用的方式。flex程序猿和java程序猿相互獨立的工作。以下介紹下.。 一、所須要的軟件 MyEclipes + Tomcat6.0 + Flex Builder3 + BlazeDS,網上自己去下載。 二、配置server端(MyEclipes + Tomcat6.0?+ BlazeDS) 1、先將BlazeDS壓縮包解壓開,在找到blazeds.war解壓開,得到META-INF目錄和WEB-INF目錄。 2、打開MyEclipes,配置Tomcat服務器:window->Preferences->MyEclipes->Application Server->Tomcat->Tomcat 6.x配置Tomcat home directory 為Tomcat的安裝路徑,同一時候選擇Tomcat server->Enable.。 3、接下來,在MyEclipse中創建一個Web Project,project名 Peace。 4、然后把第一步解壓blazeds.war所得的兩個目錄粘貼到Peace項目下的WebRoot目錄下,出現Override提示框,選擇Yes to All。 5、以下在本project的src文件夾下編寫一個java類(包名com.nankyrei.service,類名HelloWorld): package com.nankyrei.service public class HelloWorld{ public String getHello(){ return "Hello World"; } } 6、java類寫好了,以下要在remoting-config.xml中聲明這個類(粗體字部分): <?mxl version="1.0" encoding="UTF-8"?> <service id="remoting-service" class="flex.messaging.services.RemotingService"> <adapters> <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/> </adapters><default-channels> <channel ref="my-amf"/> </default-channels> <destination id="helloWorld"> <porperties> <!--這里要寫完整路徑:包名+類名--> <source>com.nankyrei.service.HelloWorld</source> </porperties> </destination> </service> 7、好了,大功告成,如今將這個項目部署到Tomcatzhong,然后啟動Tomcat。 三、創建flexclient 1、新建一個flex項目,名稱為flex_peace,選擇Application server type:J2EE。 2、這一步很重要,點擊next,設置server location,當中Root folder為剛剛在tomcat里部署的Peace項目路徑。為了保持一致性,Root URL和Context root 中的相對路徑的名稱都與該web項目名稱保持同樣。這三項內容填寫好后,須要點擊“Validate Configuration”button,進行配置驗證(此時讓Tomcat處于開啟狀態)。驗證完畢后點擊Finish。 3、最后編寫client(flex_peace.mxml) ?<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
??? <mx:Script>
??? <![CDATA[
??????? import mx.rpc.events.FaultEvent;
??????? import mx.controls.Alert;
??????? import mx.rpc.events.ResultEvent;
???????
??????? private function resultHandler(event:ResultEvent):void {
??????????? Alert.show(event.result.toString(), "成功");
??????? }
???????
??????? private function faultHandler(event:FaultEvent):void {
??????????? Alert.show(event.fault.toString(), "失敗");
??????? }
??????? ]]>
??? </mx:Script>
???
??? <!-- destination 屬性值要和 remoting-config.xml 中 destination 的 id 一致-->
??? <mx:RemoteObject id="remoteObject"
????????????????????? destination="helloWorld"
???????????????????? result="resultHandler(event)"
???????????????????? fault="faultHandler(event)"/>
???
??? <mx:Button label="發送消息" click="remoteObject.getHello()" x="256.5" y="197"/>
</mx:Application> 4、執行Flex Application,右鍵點擊flex_peace.mxml->run as->Flex Application就可以,(期間tomcat必須保持執行狀態) 另外一種:Flex工程增加 Java 元素
1、 切換到 Flex視圖,新建 Flex project,例如以下圖
說明: Java source folder 就是你自己 java業務源代碼存放的根文件夾,在 FB3 里, LCDS
項目旨在將 Java J2ee 項目和 FlexLcds 項目混合。
當然假設你不選擇 combined 兩個在一起,那么就麻煩些:要么你再單獨新建一個
Flex 項目,而這個項目僅僅寫 java代碼。要么再建一個J2eeproject寫 java代碼,而這
由于我們是要 java 和 flex結合,所
以在server選擇上我們選擇 J2EE
存放java類的源文件,我們的目的
就是Flex和?java在一個project里,所
以我們這里選擇上
個項目僅僅寫 Flex 代碼,但最后要把 Java 編譯后的 class 文件放到這個項目下的
webroot/web-inf/classes 文件夾中。即無論如何,最后公布時,java 編譯后的 class
文件必須和 lcds 部署的項目在一起。
2、 點擊Next,配置 J2EEserver,例如以下圖
?
說明: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 里編
譯吧,盡管開發時多耗點時間,可是在公布后不會占用server的編譯處理時間,對
用戶來說是有優點的。
Output folder 指的是 Flex 編譯后的 swf 和 html 等文件存放的路徑,這里改為了
WebRoot,意思是公布到根文件夾就能夠了。當然你能夠依據你的須要和習慣自行設
置其它的路徑
由于我們採用的 BlazeDS,所
以這里要設置 BlazeDS 的路
徑
這里我們能夠自己定義輸出路徑,
普通情況下設置成根文件夾
WebRoot 就能夠了
3、 點擊下一步,採用默認的配置就能夠,點擊完畢,該project就建立完畢。下圖為該工
程的文件夾結構
4、 讓它變成 webproject由MyEclipse公布吧
Flex 文件的
源文件夾
Java 源文件
夾
自己主動生成的
flex 的配置
文件
Flex 編譯后公布
的文件。我們發
布在根文件夾下
點擊Finish,如今我們的project的圖標變成了 J2EE Web project了,這意味著,你能夠
注意,不要點的太快了,要把這里的
對號勾掉,這樣就不會覆蓋 BlazeDS
創建的 web.xml 用MyEclipse來公布它或者加入很多其它容器,比方hibernate、spring等
5、 project建好以后,你能夠通過右鍵—>屬性來進行很多其它的設置。
?
6、 這樣一個 Flex+Java的project就建立完畢。
7、 編寫樣例,測試在介紹完第三種方式以后統一介紹。
第三種:由 Web project反向增加 Flex,也就是Java+Flex
1、 先建立一個 webproject:flexweb。(略)
2、 向flexweb project手工增加 Flex須要的元素。
1)首先將 BlazeDS須要的jar文件拷到project的 lib 文件夾下。能夠將上面建的那個 flex
project的 lib下的jar文件拷到該project下的 lib文件夾下。
2)然后要增加 Flex BlazeDS須要的配置文件。在 WEB-INF下新建一個名為 flex 的文
件夾,然后將我們上面建立的那個 firstFlex 該文件夾下的四個 xml 文件拷到該文件
夾下。
3)最后,改動 web.xml 文件,增加 Flex 的配置。做法一個簡單的把上面我們新建
的那個 flexproject的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>)
<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、 將該project公布到tomcat下,并啟動 tomcat。(注:一定要啟動tomcat,由于在后面
的設置中,它要驗證project的路徑)
4、 然后在該project上右鍵?Flex Project Nature?Add Flex Project Nature
5、 設置完畢后,會發現 webproject的文件夾結構已經發生了改變,例如以下圖。
我們發現以這樣的形式建立的project的文件夾結構和另外一種方法有少許的不同,flex 的
mxml文件默認的放在 src文件夾中,和java文件共用一個文件夾。而且沒有像上一個
project那樣自己主動的編譯出可執行的文件。
配置server路徑
配置正確的顯示
建議不要改動這里的配置
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="http://www.adobe.com/2006/mxml"
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 會動態編譯返回結果。
轉載自:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147d8c8c4668d4e419ce3b4c413037bfa6663f405a8e906b6075a91f5fbdf43176610123b5999cc0169bac925f75ce786a6459db0144dc4df19c0c32c050872a9ab86891adf142cbfd9680c85523dd22026df7f69c2c0403bb6ee71541f4d7ef5f652e07ca9b2712ff&p=8b2a94039e8311a058ecc8601e56&user=baidu
?
解決:
倒數第11行的404?異常,我對照另外一種和第三種發現第三種漏了
?
這個目錄,所以解決的方法:把漏的目錄整個從另外一種拷一份到項目中、刷新,一定要刷新到到出現
?
這個目錄有這些內容,才干夠成功。
總結
以上是生活随笔為你收集整理的java整合flex的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AMD 公布锐龙 7045HX 系列游戏
- 下一篇: 旅日大熊猫香香坐顺丰飞机到家!1个月后与