》》》》》》》》》》》》》》》》启动安装Flex插件的myeclipse。《《《《《《《《
1、新建Flex project;
2、这一步,就是需要注意create combined Java/Flex prject using WTP这一项一定要勾上,Java Source Folder就是Java业务代码存放的根目录,默认用src即可,无须改动。这样就将Java和FlexLCDS代码放在一起了。
3、这一步很重要的。Targe runtime其实可以不选,但是不选不能到下一步。如果没有,就需要New一个,参考下边页面。
Tomcat的即可。
Contextfolder就是最终编译的容器目录。
Flex WAR file就是选择BlazeDS的blazeds.war(下载的BlazeDS Turnkey包中有,这个包中还有Demo,包括自带的Tomcat),如果是LCDS,就是flex.war的路径。
从http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/下载BlazeDS
Outputfolder是Flex编译后swf和html文件的目录,按照常规,最好加个bin路径:)
4、Main source folder是放Flex源码存放目录,和Java分开。
Output folder URL是开发过程中运行和请求的路径,端口默认是8080(自己改,记得要改部署的应用服务器配置文件)。
到这一步,Finish,但是这里的配置并不能全部保存正确,所以下边部署完后的一些步骤非常重要,否则Flex无法通过LCDS(BlazeDS)和JAVA通信。
5、生成的代码结构如下(生成很多默认的配置文件,方便开发):
6、发布成J2EE项目,这样就可以和Spring、Hibernate等等集成了;
这一步一定要注意,去掉Create web.xml的勾,这样就不会覆盖LCDS(BlazeDS)创建的web.xml文件。
图标变成J2EE,不是Fx的标志了。
7、部署到Tomcat。
点击finished。则会开始部署,成功后,Deployment status会提示Success,并且看到列表中的项目已经成功部署。
8、上边的配置没有完全保存,所以要进行一些修改,第一个就是修改Output folder Url》》》项目属性,点击Flex Build Path,如下界面
Output folder这样每次发布都会自动将编译的最终swf放到WebRoot\bin目录下。
Output folder URL后边加上bin,在发布和请求时,直接请求这个路径。运行Application,如下图:
如果出现以下界面,则说明配置正确:
9、最后步骤:修改参数才能使Flex和Java通过LCDS(BlazeDS)正常通信。
Root URL就是web服务器的根路径。端口可以自己改动。
Context root是LCDS(BlazeDS)工程的名称,因为Flex和Java是一个工程,所以这儿也就是新建的Flex Project工程名称。如果J2EE和Flex是两个项目,那么这个是J2EE项目的名称而不是Flex项目的名称。
Flex请求LCDS(BlazeDS)时,需要使用Context root这个参数。
格式:http://{server.name}:{server.port}/{context.root}/messagebroke/amf
所以这一步的配置非常重要,特别是context root这一项。
》》》》》》》此配置测试代码:
testJF.mxml:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:RemoteObject id="destination" destination="helloWorld"> </mx:RemoteObject> <mx:Button x="335" y="80" label="点击" click="remotingHello(event);"/>
<mx:TextInput x="159" y="80" id="tiName"/> <mx:Label x="109" y="82" text="name:"/> <mx:Label text="{destination.getHelloWorld.lastResult}" x="44" y="162" width="448"
height="71" id="lblView" color="#FCEE09"
fontSize="20" fontWeight="bold" textDecoration="underline" fontStyle="normal"/>
<mx:Script> <![CDATA[ public function remotingHello(event:Event):void{ var iname:String=tiName.text; destination.getHelloWorld(iname); aaid.text = destination.aa; } ]]> </mx:Script> <mx:Label id="aaid" x="56" y="215" text="发送前" width="154" height="29" fontSize="14"/> </mx:Application>
|
HelloWorld.java:
package com.blazeds.test;
public class HelloWorld {
public HelloWorld() { } public String aa = "123"; public String getHelloWorld(String name) { return "Hello World! 我输入的名字是: "+name; } } |
remoting-config.xml:
<?xml 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"> <properties> <source>com.blazeds.test.HelloWorld</source> </properties> </destination>
</service> |
Tomcat启动数据源报错的解决方法:
严重: Null component Catalina:type=DataSource,path=/testJF,host=localhost,class=javax.sql.DataSource ,name="jdbc/ora/xxyp"
将部署项目下WEB-INF中lib目录的naming-factory.jar,naming-factory-dbcp.jar两个文件删除即可。
上面的代码有误,正确如下:
<?xmlversion="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:RemoteObject id="destinat" destination="helloJava" result="succResult(event)"fault="faResult(event)">
</mx:RemoteObject>
<mx:Button x="191" y="229" label="点击" click="remotingHello(event)"/>
<mx:TextInput x="278" y="229" id="tiName"/>
<mx:Label x="204" y="279" text="name" width="56" height="28" textDecoration="normal"fontSize="14"/>
<mx:Label x="204" y="303" id="lblView"fontSize="20" fontWeight="bold" textDecoration="underline" fontStyle="italic" color="#0DF818"/>
<mx:Label x="204" y="352" text="发送前" id="aaid" fontSize="14"/>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
public var str:String;
public function faResult(event:FaultEvent):void{
Alert.show(event.fault.toString());
}
public function succResult(event:ResultEvent):void{
str = event.result.toString();
Alert.show(str);
lblView.text = str;
//也可以用text="{destinat.getHelloJava.lastResult}"获得显示信息
var aa:String = "发送后";
aaid.text = aa;
}
public function remotingHello(event:Event):void{
var iname:String = tiName.text;
destinat.getHelloJava(iname);
}
]]>
</mx:Script>
</mx:Application>