java整合flex
java+flex項(xiàng)目整合
java+flex 2010-12-20 16:11:12 閱讀59 評(píng)論0 ??字號(hào):大中小?訂閱
第一種:javaproject和flexproject獨(dú)立 這樣的方式也是非常多人使用的方式。flex程序猿和java程序猿相互獨(dú)立的工作。以下介紹下.。 一、所須要的軟件 MyEclipes + Tomcat6.0 + Flex Builder3 + BlazeDS,網(wǎng)上自己去下載。 二、配置server端(MyEclipes + Tomcat6.0?+ BlazeDS) 1、先將BlazeDS壓縮包解壓開,在找到blazeds.war解壓開,得到META-INF目錄和WEB-INF目錄。 2、打開MyEclipes,配置Tomcat服務(wù)器:window->Preferences->MyEclipes->Application Server->Tomcat->Tomcat 6.x配置Tomcat home directory 為Tomcat的安裝路徑,同一時(shí)候選擇Tomcat server->Enable.。 3、接下來,在MyEclipse中創(chuàng)建一個(gè)Web Project,project名 Peace。 4、然后把第一步解壓blazeds.war所得的兩個(gè)目錄粘貼到Peace項(xiàng)目下的WebRoot目錄下,出現(xiàn)Override提示框,選擇Yes to All。 5、以下在本project的src文件夾下編寫一個(gè)java類(包名com.nankyrei.service,類名HelloWorld): package com.nankyrei.service public class HelloWorld{ public String getHello(){ return "Hello World"; } } 6、java類寫好了,以下要在remoting-config.xml中聲明這個(gè)類(粗體字部分): <?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、好了,大功告成,如今將這個(gè)項(xiàng)目部署到Tomcatzhong,然后啟動(dòng)Tomcat。 三、創(chuàng)建flexclient 1、新建一個(gè)flex項(xiàng)目,名稱為flex_peace,選擇Application server type:J2EE。 2、這一步很重要,點(diǎn)擊next,設(shè)置server location,當(dāng)中Root folder為剛剛在tomcat里部署的Peace項(xiàng)目路徑。為了保持一致性,Root URL和Context root 中的相對(duì)路徑的名稱都與該web項(xiàng)目名稱保持同樣。這三項(xiàng)內(nèi)容填寫好后,須要點(diǎn)擊“Validate Configuration”button,進(jìn)行配置驗(yàn)證(此時(shí)讓Tomcat處于開啟狀態(tài))。驗(yàn)證完畢后點(diǎn)擊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="發(fā)送消息" click="remoteObject.getHello()" x="256.5" y="197"/>
</mx:Application> 4、執(zhí)行Flex Application,右鍵點(diǎn)擊flex_peace.mxml->run as->Flex Application就可以,(期間tomcat必須保持執(zhí)行狀態(tài)) 另外一種:Flex工程增加 Java 元素
1、 切換到 Flex視圖,新建 Flex project,例如以下圖
說明: Java source folder 就是你自己 java業(yè)務(wù)源代碼存放的根文件夾,在 FB3 里, LCDS
項(xiàng)目旨在將 Java J2ee 項(xiàng)目和 FlexLcds 項(xiàng)目混合。
當(dāng)然假設(shè)你不選擇 combined 兩個(gè)在一起,那么就麻煩些:要么你再單獨(dú)新建一個(gè)
Flex 項(xiàng)目,而這個(gè)項(xiàng)目?jī)H僅寫 java代碼。要么再建一個(gè)J2eeproject寫 java代碼,而這
由于我們是要 java 和 flex結(jié)合,所
以在server選擇上我們選擇 J2EE
存放java類的源文件,我們的目的
就是Flex和?java在一個(gè)project里,所
以我們這里選擇上
個(gè)項(xiàng)目?jī)H僅寫 Flex 代碼,但最后要把 Java 編譯后的 class 文件放到這個(gè)項(xiàng)目下的
webroot/web-inf/classes 文件夾中。即無論如何,最后公布時(shí),java 編譯后的 class
文件必須和 lcds 部署的項(xiàng)目在一起。
2、 點(diǎn)擊Next,配置 J2EEserver,例如以下圖
?
說明:Target runtime 實(shí)際上沒什么用(后來我刪除了配置文件中的相應(yīng)信息,也
沒問題),可是不指定就不能繼續(xù),假設(shè)這里顯示的是<none>那么就新建一個(gè)
Tomcat 的runtime,簡(jiǎn)單的僅僅須要指定tomcat 的安裝文件夾就可以。
Content folder 實(shí)際上就是終于編譯后的容器文件夾,因此,BlazeDS 的 blazeds.war
文件將會(huì)公布到 該文件夾 下的 web-inf 下的 flex 文件夾中。同一時(shí)候由于教程採(cǎi)用的是
MyEclipse,他默認(rèn)的就是公布 WebRoot 里的內(nèi)容,為了自己主動(dòng)化,因此這里改為了
WebRoot(這也是 java 開發(fā)的習(xí)慣)?
Flex WAR file 指的是安裝了 lcds 后的 flex.war 文件的路徑,可是在這里我們採(cǎi)用
的是BlazeDS來代替 lcds,所以這里設(shè)置的是 blazeds.war的路徑。
Compilation options 指定了 flex 文件的編譯方式,選擇推薦的在 FlexBuilder 里編
譯吧,盡管開發(fā)時(shí)多耗點(diǎn)時(shí)間,可是在公布后不會(huì)占用server的編譯處理時(shí)間,對(duì)
用戶來說是有優(yōu)點(diǎn)的。
Output folder 指的是 Flex 編譯后的 swf 和 html 等文件存放的路徑,這里改為了
WebRoot,意思是公布到根文件夾就能夠了。當(dāng)然你能夠依據(jù)你的須要和習(xí)慣自行設(shè)
置其它的路徑
由于我們採(cǎi)用的 BlazeDS,所
以這里要設(shè)置 BlazeDS 的路
徑
這里我們能夠自己定義輸出路徑,
普通情況下設(shè)置成根文件夾
WebRoot 就能夠了
3、 點(diǎn)擊下一步,採(cǎi)用默認(rèn)的配置就能夠,點(diǎn)擊完畢,該project就建立完畢。下圖為該工
程的文件夾結(jié)構(gòu)
4、 讓它變成 webproject由MyEclipse公布吧
Flex 文件的
源文件夾
Java 源文件
夾
自己主動(dòng)生成的
flex 的配置
文件
Flex 編譯后公布
的文件。我們發(fā)
布在根文件夾下
點(diǎn)擊Finish,如今我們的project的圖標(biāo)變成了 J2EE Web project了,這意味著,你能夠
注意,不要點(diǎn)的太快了,要把這里的
對(duì)號(hào)勾掉,這樣就不會(huì)覆蓋 BlazeDS
創(chuàng)建的 web.xml 用MyEclipse來公布它或者加入很多其它容器,比方hibernate、spring等
5、 project建好以后,你能夠通過右鍵—>屬性來進(jìn)行很多其它的設(shè)置。
?
6、 這樣一個(gè) Flex+Java的project就建立完畢。
7、 編寫樣例,測(cè)試在介紹完第三種方式以后統(tǒng)一介紹。
第三種:由 Web project反向增加 Flex,也就是Java+Flex
1、 先建立一個(gè) webproject:flexweb。(略)
2、 向flexweb project手工增加 Flex須要的元素。
1)首先將 BlazeDS須要的jar文件拷到project的 lib 文件夾下。能夠?qū)⑸厦娼ǖ哪莻€(gè) flex
project的 lib下的jar文件拷到該project下的 lib文件夾下。
2)然后要增加 Flex BlazeDS須要的配置文件。在 WEB-INF下新建一個(gè)名為 flex 的文
件夾,然后將我們上面建立的那個(gè) firstFlex 該文件夾下的四個(gè) xml 文件拷到該文件
夾下。
3)最后,改動(dòng) web.xml 文件,增加 Flex 的配置。做法一個(gè)簡(jiǎn)單的把上面我們新建
的那個(gè) flexproject的web.xml的部分代碼拷過來。
(注意:這樣會(huì)出錯(cuò),能夠把
<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下,并啟動(dòng) tomcat。(注:一定要啟動(dòng)tomcat,由于在后面
的設(shè)置中,它要驗(yàn)證project的路徑)
4、 然后在該project上右鍵?Flex Project Nature?Add Flex Project Nature
5、 設(shè)置完畢后,會(huì)發(fā)現(xiàn) webproject的文件夾結(jié)構(gòu)已經(jīng)發(fā)生了改變,例如以下圖。
我們發(fā)現(xiàn)以這樣的形式建立的project的文件夾結(jié)構(gòu)和另外一種方法有少許的不同,flex 的
mxml文件默認(rèn)的放在 src文件夾中,和java文件共用一個(gè)文件夾。而且沒有像上一個(gè)
project那樣自己主動(dòng)的編譯出可執(zhí)行的文件。
配置server路徑
配置正確的顯示
建議不要改動(dòng)這里的配置
6、 假設(shè)你對(duì)這個(gè)文件夾結(jié)構(gòu)不太愜意,還想讓 flex 的文件放在 flex_src 文件夾下,別急,
我們能夠通過右鍵?屬性來設(shè)置。例如以下圖
在這里你能夠又一次設(shè)置你的 flex源文件夾和輸出文件夾
7、 配置 flex 默認(rèn)的 sdk。這樣配置完,還不行,程序可能還不能正常地執(zhí)行,還須要
配置他使用的 sdk。例如以下圖
8、 立即就大功告成了,讓我們來寫個(gè)程序測(cè)試一下吧。
1)新建一個(gè) java類:Hello.java
package com;
public class Hello {
public String hello(String name){
System.out.println("flex調(diào)用我了,真好~~~~");
return "hello "+name;
}
}
2)為flex配置這個(gè)要調(diào)用的對(duì)象,改動(dòng)WEB-INF/flex下remoting-config.xml
增加:
<destination id="hello">
<properties>
<source>
com.Hello
</source>
</properties>
</destination>
3)編寫一個(gè)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)重新啟動(dòng)tomcat,執(zhí)行flexweb.mxml.
第三種方法,在編譯完后,訪問網(wǎng)頁會(huì)出現(xiàn) 404 異常。詳細(xì)原因不詳。可是它仍會(huì)編譯出
一個(gè) swf文件,訪問這個(gè) swf 就可以。而另外一種方式能夠編譯出一個(gè) html 文件。訪問一下會(huì)出
現(xiàn)一下界面:
輸入 dfdff,則輸出 hello dfdff。說明調(diào)用 java 類成功。不信我們能夠看看 java
類在控制臺(tái)上的打印。
配置成功,高興吧,o(∩_∩)o…哈哈。
假設(shè)用 lcds,則不須要預(yù)編譯,能夠直接訪問 mxml 文件,lcds 會(huì)動(dòng)態(tài)編譯返回結(jié)果。
轉(zhuǎn)載自:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147d8c8c4668d4e419ce3b4c413037bfa6663f405a8e906b6075a91f5fbdf43176610123b5999cc0169bac925f75ce786a6459db0144dc4df19c0c32c050872a9ab86891adf142cbfd9680c85523dd22026df7f69c2c0403bb6ee71541f4d7ef5f652e07ca9b2712ff&p=8b2a94039e8311a058ecc8601e56&user=baidu
?
解決:
倒數(shù)第11行的404?異常,我對(duì)照另外一種和第三種發(fā)現(xiàn)第三種漏了
?
這個(gè)目錄,所以解決的方法:把漏的目錄整個(gè)從另外一種拷一份到項(xiàng)目中、刷新,一定要刷新到到出現(xiàn)
?
這個(gè)目錄有這些內(nèi)容,才干夠成功。
總結(jié)
以上是生活随笔為你收集整理的java整合flex的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AMD 公布锐龙 7045HX 系列游戏
- 下一篇: 旅日大熊猫香香坐顺丰飞机到家!1个月后与