connectionTimeout="20000"
redirectPort="9400"/>
配置的端口信息为“8400”
5、手动方式启动TomCat检查是否配置成功(当然你也可以在Eclipse中安装TomCat插件控制Tomcat):
启动命令行“cdD:
\ProgramFiles\tomcat\bin”定位至TomcatBin目录
运行“startup.bat”启动TomCat看到如下(启动成功):
浏览器中输入:
“http:
//localhost:
8400/”如下(恭喜JAVA环境+BlazeDS+Tomcat配置成功):
6、建立开发文件夹,拷贝BlazeDS配置文件和用到的配置文件及类库“WEB-INF”至站点目录:
找到blazeds.war个改后缀为RAR解压找到“WEB-INF”文件夹拷贝至"WebSite"下目录结构如:
这样做的目的是将JAVA项目同Flex项目Web站点目录分开互不干扰(使用eclipse的Flex开发插件有时会报莫名的错误,Flex开发还是建议用FlexBuilder)
7、在Eclipse中新建java项目并将编译路径链接至“..\WebSite\WEB-INF\classes”目录下如图:
8、发布WebSite至TomCat:
在“D:
\ProgramFiles\tomcat\conf\server.xml”文件节点中新增如下节点重启TomCat(执行第5步骤运行“shutdown.bat”再运行“startup.bat”)
1.2. unpackWARs="true" autoDeploy="true"
3. xmlValidation="false" xmlNamespaceAware="false">
4. \学习\BlazeDs\WebSite" debug="0" reloadable="true" crossContext="true" />
5.
9、新建FLEX服务器为J2EE的“myBlazeDSFlex”项目至"E:
\学习\BlazeDs\Flex"目录
10、配置服务器及Flex输出目录至“webSite\flex"下,并“ValidateConfiguration”通过(如图):
11、你也可以手动设置Felx项目属性(如图)来配置J2EE服务器:
12、在eclipse中编写完成Java类及方法并编译:
UserBean类:
1.package myBlazeDS;
2. public class UserBean {
3. private String _name;
4. private int _age;
5. private String _address;
6. public UserBean(String name,int age,String address)
7. {
8. this._name = name;
9. this._age = age;
10. this._address = address;
11. }
12.
13. public void setName(String name)
14. {
15. this._name = name;
16. }
17. public String getName()
18. {
19. return this._name;
20. }
21.
22. public void setAge(int age)
23. {
24. this._age = age;
25. }
26. public int getAge()
27. {
28. return this._age;
29. }
30.
31. public void setAddress(String address)
32. {
33. this._address = address;
34. }
35. public String getAddress()
36. {
37. return this._address;
38. }
39. }
外部接口类BlazeDSService:
1.package myBlazeDS;
2.
3. public class BlazeDSService {
4. public String GetBlazeService(String user)
5. {
6. return user +":
欢迎使用Java BlazeDS同Flex交互";
7. }
8. public UserBean GetUserInfo(String name,int age,String address)
9. {
10. return new UserBean("User:
" + name, age,address + " China");
11. }
12. }
13、配置“E:
\学习\BlazeDs\WebSite\WEB-INF\flex\remoting-config.xml”增加(如图):
1.
2.
3.
4. myBlazeDS.BlazeDSService
5.
6. application
7.
8.
14、在Flex引入RemoteObject指定destination属性加入调用方法method>节点如:
1.RemoteObject id="myJavaService" destination="FirstBlazeService" showBusyCursor="true">
2. method name="GetBlazeService" fault="onBlazeDSFalut(event)" />
3. method name="GetUserInfo" result="getUserBean(event)" fault="onBlazeDSFalut(event)" />
4.
RemoteObject>
15、完整体Flex页面代码:
1.
xml version="1.0" encoding="utf-8"?
>
2. Application xmlns:
mx=" layout="absolute">
3. RemoteObject id="myJavaService" destination="FirstBlazeService" showBusyCursor="true">
4. method name="GetBlazeService" fault="onBlazeDSFalut(event)" />
5. method name="GetUserInfo" result="getUserBean(event)" fault="onBlazeDSFalut(event)" />
6.
RemoteObject>
7. Canvas width="653" height="190" x="10" backgroundColor="#297E8D" fontSize="15">
8. Script>
9.
--[CDATA[
10. import mx.rpc.events.FaultEvent;
11. import mx.rpc.events.ResultEvent;
12. import mx.controls.Alert;
13. import mx.core.UIComponent;
14. import mx.core.BitmapAsset;
15. import mx.core.ByteArrayAsset;
16. private function onCallJava():
void
17. {
18. myJavaService.GetBlazeService(nameInput.text);
19. }
20. private function onCallBean():
void
21. {
22. myJavaService.GetUserInfo(txtName.text,int(txtAge.text),txtAddress.text);
23.
24. }
25. private function getUserBean(e:
ResultEvent):
void
26. {
27. var o:
*=e.result as Object;
28. vtxtName.text = o.name;
29. vtxtAge.text = o.age;
30. vtxtAddress.text = o.address;
31. }
32. private function onBlazeDSFalut(e:
FaultEvent):
void
33. {
34. Alert.show(e.message.toString());
35. }
36. ]]-->
37.
Script>
38. TextInput id="nameInput" x="108" y="18" width="145"/>
39. Button label="Call Java" click="onCallJava();" x="274" y="18" fillAlphas="[1.0, 1.0]"/>
40. TextArea text="{myJavaService.GetBlazeService.lastResult}" x="397" height="34" width="246" y="19"/>
41. Label x="10" y="61" width="632" height="2"/>
42. Label x="10" y="80" text="UserName:
"/>
43. Label x="10" y="117" text="UserAge:
"/>
44. Label x="10" y="150" text="Address:
"/>
45. TextInput x="108" y="78" id="txtName" width="146"/>
46. TextInput x="107" y="115" id="txtAge" width="147"/>
47. TextInput x="107" y="148" id="txtAddress" width="147"/>
48. Button x="272" y="112" label="Call Bean" id="btnCallBean" click="onCallBean();"/>
49. Text x="397" y="80" width="246" id="vtxtName"/>
50. Text x="397" y="117" width="246" id="vtxtAge"/>
51. Text x="397" y="150" width="246" id="vtxtAddress"/>
52.
Canvas>
53.
Application>
54.
16、DEMO完成后目录结构如图:
17、DEMO功能完成最终效果如图:
源码下载:
flex还可以通过如XMLSocket FMS 二进制套接字等同服务器交互,就不再赘述了本系列课程到此告一段落!