blazeds调用java_Flex使用Blazeds与Java交互及自定义对象转换详解(转)
一、建立Flex與Java交互的工程。
本文中講到的交互是利用Blazeds的,因?yàn)檫@個(gè)是免費(fèi)的,呵呵,我是窮人。
首先就是去下載Blazeds的壓縮包,這個(gè)可以從官網(wǎng)或者CSDN、JavaEye上下到。解壓縮這個(gè)包,將里面的Blazeds.war解壓,后面建立工程時(shí)要使用。
在MyEclipse中建立一個(gè)web工程,名為FlexTest。(注意:這個(gè)工程的JDK一定是1.5或以上版本,本文使用6.0)
將剛才解壓的Blazeds.war包中的“META-INF”與“WEB-INF”文件夾以及文件夾中的內(nèi)容拷貝到工程的WebRoot下。WEB-INF中包含有Flex的配置文件以及Blazeds需要的Jar包。這時(shí)我們就可以在這個(gè)工程中寫(xiě)入Java代碼了。本文以一個(gè)用戶(hù)列表為例,建立用戶(hù)實(shí)體類(lèi)。代碼如下:
代碼
package com.rocd.flex.entity;
import java.io.Serializable;
public class UserBean implements Serializable {
private String userName;
private String password;
private int age;
private String email;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
注意,由于這個(gè)實(shí)體類(lèi)需要當(dāng)做Java代碼中方法的返回值傳遞給Flex中的AS代碼,所以需要繼承Serializable接口,否則將導(dǎo)致異常的發(fā)生。
然后,在建立一個(gè)供Flex調(diào)用的Java類(lèi)。代碼如下
package com.rocd.flex.biz;
import java.util.ArrayList;
import java.util.List;
import com.rocd.flex.entity.UserBean;
public class UserManager {
public List getUserList() {
List list = new ArrayList();
for (int i = 0; i < 10; i++) {
UserBean user = new UserBean();
user.setUserName("用戶(hù)" + i);
user.setPassword("123");
user.setAge(20 + i);
user.setEmail("user" + i + "@aaa.com");
list.add(user);
}
return list;
}
}
這里就不連接數(shù)據(jù)庫(kù)去操作了,因?yàn)楸疚闹攸c(diǎn)放在Flex調(diào)用Java上,所以寫(xiě)個(gè)樁數(shù)據(jù)用以測(cè)試。
寫(xiě)完了這兩個(gè)類(lèi),就需要在WebRoot/WEB-INF/flex/remoting-config.xml中配置用以調(diào)用這個(gè)Java類(lèi)的信道了。具體代碼如下:
class="flex.messaging.services.RemotingService">
class="flex.messaging.services.remoting.adapters.JavaAdapter"
default="true"/>
com.rocd.flex.biz.UserManager
其中destination就是信道,properties是可以配置多個(gè)Java類(lèi),source是配置要調(diào)用Java類(lèi)的包路徑。
配置多個(gè)destination:
1
2
3 com.bless.login.service.impl.LoginServiceImpl
4
5
6
7
8 com.bless.ospm.service.impl.LoginInfoServiceImpl
9
10
到此,Java部分的代碼就寫(xiě)完了。下面是Flex中的代碼。
在Flex Builder中創(chuàng)建一個(gè)Flex工程。名稱(chēng)為FlexApp。如圖所示
注意Server location中Root folder要選擇Java Web工程的WebRoot路徑。Root URL是Java web工程的訪問(wèn)路徑,由于使用的是Tomcat服務(wù)器,工程名為FlexTest,所以路徑是http://localhost:8080/FlexTest/,而 Context root則是Java Web項(xiàng)目的工程名。完成后點(diǎn)擊那個(gè)[Validate Configuration]進(jìn)行驗(yàn)證,如果窗口上方顯示如上圖所示的“黃三角”就說(shuō)明可以進(jìn)行下一步操作了。
順利建立完Flex工程后,需要注意是否報(bào)錯(cuò),如果報(bào)錯(cuò),請(qǐng)注意調(diào)整Flex SDK的版本。
沒(méi)問(wèn)題后,就要?jiǎng)?chuàng)建一個(gè)AS的類(lèi),用來(lái)接收J(rèn)ava程序的返回值了,也就是那個(gè)UserBean。代碼如下:
package com.rocd.flex.entity
{
[Bindable]
[RemoteClass(alias="com.rocd.flex.entity.UserBean")]
public class UserBean
{
public var userName:String;
public var password:String;
public var age:int;
public var email:String;
}
}
這里[Bindable]是可綁定的,[RemoteClass(alias="com.rocd.flex.entity.UserBean")]是和Java代碼中的UserBean類(lèi)關(guān)聯(lián)起來(lái)。這樣就可以利用類(lèi)型轉(zhuǎn)換來(lái)將Java對(duì)象轉(zhuǎn)換為AS對(duì)象了。
現(xiàn)在讓我們?cè)贔lex中調(diào)用這個(gè)Java代碼吧。代碼如下:
fontSize="12" initialize="init()">
import com.rocd.flex.entity.UserBean;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
private function init():void
{
UserManager.getUserList();
UserManager.addEventListener(ResultEvent.RESULT,getUserList);
}
private function getUserList(event:ResultEvent):void
{
var userList:ArrayCollection = ArrayCollection(event.result);
var userList_FlexData:ArrayCollection = new ArrayCollection();
for (var i:int = 0; i < userList.length; i++)
{
var user:UserBean = UserBean(userList.getItemAt(i));
userList_FlexData.addItem(user);
}
dataGrid.dataProvider = userList_FlexData;
}
]]>
showBusyCursor="true" />
啟動(dòng)Tomcat服務(wù)器后運(yùn)行這個(gè)Flex程序,如下圖所示:
總結(jié)
以上是生活随笔為你收集整理的blazeds调用java_Flex使用Blazeds与Java交互及自定义对象转换详解(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 股票发生大宗交易说明什么
- 下一篇: crontab 改成只读模式_以“三合一