Flex+Java项目开发心得

一、花岗岩插件安装

  1.把flexTasks.jar,flexTasks.tasks 复制到Flex sdks\3.0.0\lib下

  2.把org.granite.gas3_1.0.0文件夹,复制到eclipse\plugins

  2.删除eclipse\configuration\org.eclipse.update文件夹

  3.启动eclipse。

  4.把build.xml、env.properties复制到项目根目录下。

  5.修改env.properties里的FLEX_HOME、FLEX_TASKS_JAR 为实际路径

  (FLEX_HOME是flex sdk路径 FLEX_TASKS_JAR 默认放在FLEX_HOME下的\lib下)

  6.修改APP_NAME 为部署后的web上下文名称。

  7.修改build.xml里的generate.as3任务

  例如:

  1) <gas3 outputdir="flex_src">

  指定了生成的*.as的输出路径

  2)<fileset dir="WebContent/WEB-INF/classes">

  <include name="com/gdtopway/tc/domain/*.class"/>

  </fileset>

  指定了要生成*.as的java包路径。

  8.运行build.xml

  9.修改生成的XXBase.as文件的基类。

  从“implements IExternalizable”修改为“extends HibernateBean”

  同时在as引用“import net.digitalprimates.persistence.hibernate.HibernateBean;”

  如果没有这个swc,请先引用“dpHibernate_flexLibrary.swc”

  二、Flex项目与Java项目的结合

  1.新建一个Java项目,把.actionScriptProperties、.flexProperties、.project文件复制到项目根目录下,然后refresh项目。

  .project文件中有用的内容

  <buildCommand>

  <name>com.adobe.flexbuilder.project.flexbuilder</name>

  <arguments>

  </arguments>

  </buildCommand>

  <natures>

  <nature>com.adobe.flexbuilder.project.flexnature</nature>

  <nature>com.adobe.flexbuilder.project.actionscriptnature</nature>

  <nature>org.eclipse.wst.common.project.facet.core.nature</nature>

  <nature>org.eclipse.jdt.core.javanature</nature>

  <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>

  <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>

  </natures>

  2.右键点击properties查看项目属性,会发现多了关于flex的属性。

  3.flex和java是分开编译的,各自独立。

  4.Java Build Path:java的.class文件输出到{项目根目录}/{WebContent}/WEB-INF/classes

  5.flex Build Path-〉Source Path:

  源文件路径(存放as文件和mxml文件):一般在{项目根目录}/flex_src

  Output folder( swf文件输出路径):一般在{上下文路径}/bin

  Output folder URL(调试用的URL路径):http://localhost:7001/{上下文路径}/bin

  6.flex Build Path-〉Library Path:

  一般包括

  1)flex的sdk

  2)被flex项目引用的swc文件的路径,一般放在{项目根目录}/flex_libs下面

  (swc文件与as文件的相互关系,有点像war文件与java文件的相互关系,可以看作一个打包了的目录)

  7.Flex Compiler指定项目使用的flex sdk及编译选项

  一般地 要修改Compiler arguments

  -services "F:\JavaTools\IDE\eclipse3.3_WTP\workspace\FSPowerAudit(Flex)\FSPowerAudit/WEB-INF/flex/services-config.xml" -locale en_US

  前一个参数指定services-config.xml的绝对路径,后一个参数指定语言选项。services-config.xml用于配置flex对java后台的调用。

  8.Flex Applications

  用于指定项目中的flex主程序({项目名}.mxml,其中带有<application>标记)

  一个项目可以有多个flex主程序,但其中只有一个是默认的。

  9.Flex Modules

  用于指定flex主程序可以加载的模块(Modules),凡是要加载的模块都必须手工在这里添加,添加的时候要指定为哪个flex主程序添加,以及模块编译后的swf文件的名称和路径

  10.flex Server指定flex程序部署的Root URL和Context root。

  三、flex代码与java代码的交互。

  1.一般地mxml文件存放标记,as文件存放脚本。公共的脚本一般会抽出来,放在公共的文件夹下,然后在mxml文件中引用,例如:

  <mx:Script source="../../media/as/LayoutUtils.as"/>

  <mx:Script source="../../media/as/EventUtils.as"/>

  <mx:Script source="../../media/as/DataGridUtils.as"/>

  <mx:Script source="../../media/as/DateFormatUtils.as"/>

  2.java代码由flex代码调用。

  1)flex代码先在本地编译好成为swf,然后部署到web容器中。

  2)flex代码通过amf格式,调用java代码,java代码先编译好,对应的class文件存放在web容器中{应用程序上下文}/WEB-INF/Classes文件夹下,供由flex编译出来的swf文件调用。

  3)方法类的java对象通过RemoteObject的方式调用;RemotObject和java代码中的方法类对应,这些方法类的方法有时候会接收实体类作为参数,在RemoteObject中使用java的实体类要通过代理类。一般地一个java实体类对应一个同名的as文件(as类),这个as类的字段和java实体类的字段一一对应。这些java实体类的as代理类可以通过手工编写,也可以通过花岗岩插件自动生成。

 3.要使用flex的RemoteObject有几个配置文件需要配置。

  1)一般地这几个配置文件放在{上下文路径}/WEB-INF/flex下,安装flex builder后建立flex project eclipse会自动生成这几个文件,复制过去就ok了。

  2)service-config是最重要的一个文件,里面会引用其他文件

  <service-include file-path="remoting-config.xml" />

  <service-include file-path="messaging-config.xml" />

  <system>

  <redeploy>

  <enabled>true</enabled>

  <watch-interval>20</watch-interval>

  <watch-file>{context.root}/WEB-INF/flex/services-config.xml</watch-file>

  <watch-file>{context.root}/WEB-INF/flex/remoting-config.xml</watch-file>

  <watch-file>{context.root}/WEB-INF/flex/messaging-config.xml</watch-file>

  <touch-file>{context.root}/WEB-INF/web.xml</touch-file>

  </redeploy>

  </system>

  3)要使用remoteObject,remoting-config.xml有几个地方需要修改

  <!-- 非延时加载用此适配器 -->

  <adapter-definition id="java-adapter" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>

  <destination id="attachmentDAO">

  <properties>

  <factory>springFactory</factory>

  <source>attachmentDAO</source>

  </properties>

  </destination>

  <source>里面的是spring里定义的ID,<destination id="XX">是flex文件里使用的ID

  4)remoteObject的调用例子:

  private function getAuditType():void

  {

  var service:RemoteObject =new RemoteObject();

  service.destination = "billService";

  service.getAduitCode.addEventListener(FaultEvent.FAULT,faultEventHandler);

  service.getAduitCode.addEventListener(ResultEvent.RESULT, getAuditTypeResult);

  service.getAduitCode();

  }

  private function getAuditTypeResult(event:ResultEvent):void

  {

  dsDgAuditType = event.result;//成功时候往往是为datagrid提供dataprovider

  }

  1)新建一个remoteObject

  2)为这个RemoteObject增加事件侦听:FaultEvent.FAULT失败时候的处理、ResultEvent.RESULT成功时候的处理。

  3)为事件侦听建立相应函数。成功时候往往是为datagrid提供dataprovider,失败的时候往往是打印错误信息。

  四、部署调试

  启动web容器,启动flex Application

你可能感兴趣的:(java,eclipse,xml,Web,Flex)