java整合flex

java+flex项目整合

评论0   字号:大小 订阅

第一种:javaproject和flexproject独立
这样的方式也是非常多人使用的方式。flex程序猿和java程序猿相互独立的工作。以下介绍下.。
一、所须要的软件
MyEclipes + Tomcat6.0 + Flex Builder3 + BlazeDS,网上自己去下载。
二、配置server端(MyEclipes + Tomcat6.0 + BlazeDS)
1、先将BlazeDS压缩包解压开,在找到blazeds.war解压开,得到META-INF目录和WEB-INF目录。
2、打开MyEclipes,配置Tomcat服务器:window->Preferences->MyEclipes->Application Server->Tomcat->Tomcat 6.x配置Tomcat home directory 为Tomcat的安装路径,同一时候选择Tomcat server->Enable.。
3、接下来,在MyEclipse中创建一个Web Project,project名 Peace。
4、然后把第一步解压blazeds.war所得的两个目录粘贴到Peace项目下的WebRoot目录下,出现Override提示框,选择Yes to All。
5、以下在本project的src文件夹下编写一个java类(包名com.nankyrei.service,类名HelloWorld):
package com.nankyrei.service
public class HelloWorld{
public String getHello(){
return "Hello World";
}
}
6、java类写好了,以下要在remoting-config.xml中声明这个类(粗体字部分):
<?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、好了,大功告成,如今将这个项目部署到Tomcatzhong,然后启动Tomcat。
三、创建flexclient
1、新建一个flex项目,名称为flex_peace,选择Application server type:J2EE。
2、这一步很重要,点击next,设置server location,当中Root folder为刚刚在tomcat里部署的Peace项目路径。为了保持一致性,Root URL和Context root 中的相对路径的名称都与该web项目名称保持同样。这三项内容填写好后,须要点击“Validate Configuration”button,进行配置验证(此时让Tomcat处于开启状态)。验证完毕后点击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="发送消息" click="remoteObject.getHello()" x="256.5" y="197"/>
</mx:Application>

4、执行Flex Application,右键点击flex_peace.mxml->run as->Flex Application就可以,(期间tomcat必须保持执行状态)
另外一种:Flex工程增加 Java 元素
1、 切换到 Flex视图,新建 Flex project,例如以下图

java整合flex

说明: Java source folder 就是你自己 java业务源代码存放的根文件夹,在 FB3 里, LCDS
项目旨在将 Java J2ee 项目和 FlexLcds 项目混合。

当然假设你不选择 combined 两个在一起,那么就麻烦些:要么你再单独新建一个
Flex 项目,而这个项目仅仅写 java代码。要么再建一个J2eeproject写 java代码,而这

由于我们是要 java 和 flex结合,所
以在server选择上我们选择 J2EE

存放java类的源文件,我们的目的
就是Flex和 java在一个project里,所
以我们这里选择上
个项目仅仅写 Flex 代码,但最后要把 Java 编译后的 class 文件放到这个项目下的
webroot/web-inf/classes 文件夹中。即无论如何,最后公布时,java 编译后的 class
文件必须和 lcds 部署的项目在一起。
2、 点击Next,配置 J2EEserver,例如以下图

java整合flex

说明:Target runtime 实际上没什么用(后来我删除了配置文件中的相应信息,也
没问题),可是不指定就不能继续,假设这里显示的是<none>那么就新建一个
Tomcat 的runtime,简单的仅仅须要指定tomcat 的安装文件夹就可以。

Content folder 实际上就是终于编译后的容器文件夹,因此,BlazeDS 的 blazeds.war
文件将会公布到 该文件夹 下的 web-inf 下的 flex 文件夹中。同一时候由于教程採用的是
MyEclipse,他默认的就是公布 WebRoot 里的内容,为了自己主动化,因此这里改为了
WebRoot(这也是 java 开发的习惯)

Flex WAR file 指的是安装了 lcds 后的 flex.war 文件的路径,可是在这里我们採用
的是BlazeDS来代替 lcds,所以这里设置的是 blazeds.war的路径。

Compilation options 指定了 flex 文件的编译方式,选择推荐的在 FlexBuilder 里编
译吧,尽管开发时多耗点时间,可是在公布后不会占用server的编译处理时间,对
用户来说是有优点的。

Output folder 指的是 Flex 编译后的 swf 和 html 等文件存放的路径,这里改为了
WebRoot,意思是公布到根文件夹就能够了。当然你能够依据你的须要和习惯自行设
置其它的路径

由于我们採用的 BlazeDS,所
以这里要设置 BlazeDS 的路

这里我们能够自己定义输出路径,
普通情况下设置成根文件夹
WebRoot 就能够了
3、 点击下一步,採用默认的配置就能够,点击完毕,该project就建立完毕。下图为该工
程的文件夹结构

java整合flex
4、 让它变成 webproject由MyEclipse公布吧

java整合flex

java整合flex
Flex 文件的
源文件夹
Java 源文件

自己主动生成的
flex 的配置
文件
Flex 编译后公布
的文件。我们发
布在根文件夹下

点击Finish,如今我们的project的图标变成了 J2EE Web project了,这意味着,你能够

注意,不要点的太快了,要把这里的
对号勾掉,这样就不会覆盖 BlazeDS
创建的 web.xml 用MyEclipse来公布它或者加入很多其它容器,比方hibernate、spring等

5、 project建好以后,你能够通过右键—>属性来进行很多其它的设置。

java整合flex

6、 这样一个 Flex+Java的project就建立完毕。
7、 编写样例,測试在介绍完第三种方式以后统一介绍。

第三种:由 Web project反向增加 Flex,也就是Java+Flex
1、 先建立一个 webproject:flexweb。(略)
2、 向flexweb project手工增加 Flex须要的元素。
1)首先将 BlazeDS须要的jar文件拷到project的 lib 文件夹下。能够将上面建的那个 flex
project的 lib下的jar文件拷到该project下的 lib文件夹下。
2)然后要增加 Flex BlazeDS须要的配置文件。在 WEB-INF下新建一个名为 flex 的文
件夹,然后将我们上面建立的那个 firstFlex 该文件夹下的四个 xml 文件拷到该文件
夹下。
3)最后,改动 web.xml 文件,增加 Flex 的配置。做法一个简单的把上面我们新建
的那个 flexproject的web.xml的部分代码拷过来。

(注意:这样会出错,能够把

<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下,并启动 tomcat。(注:一定要启动tomcat,由于在后面
的设置中,它要验证project的路径)
4、 然后在该project上右键?Flex Project Nature?Add Flex Project Nature

java整合flex

java整合flex

5、 设置完毕后,会发现 webproject的文件夹结构已经发生了改变,例如以下图。
我们发现以这样的形式建立的project的文件夹结构和另外一种方法有少许的不同,flex 的
mxml文件默认的放在 src文件夹中,和java文件共用一个文件夹。而且没有像上一个
project那样自己主动的编译出可执行的文件。

java整合flex

配置server路径
配置正确的显示
建议不要改动这里的配置

6、 假设你对这个文件夹结构不太惬意,还想让 flex 的文件放在 flex_src 文件夹下,别急,
我们能够通过右键?属性来设置。例如以下图

java整合flex

在这里你能够又一次设置你的 flex源文件夹和输出文件夹
7、 配置 flex 默认的 sdk。这样配置完,还不行,程序可能还不能正常地执行,还须要
配置他使用的 sdk。例如以下图

java整合flex

8、 立即就大功告成了,让我们来写个程序測试一下吧。
1)新建一个 java类:Hello.java
package com;

public class Hello {
public String hello(String name){
System.out.println("flex调用我了,真好~~~~");
return "hello "+name;
}
}
2)为flex配置这个要调用的对象,改动WEB-INF/flex下remoting-config.xml
增加:
<destination id="hello">
<properties>
<source>
com.Hello
</source>
</properties>
</destination>

3)编写一个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)重新启动tomcat,执行flexweb.mxml.
第三种方法,在编译完后,訪问网页会出现 404 异常。详细原因不详。可是它仍会编译出
一个 swf文件,訪问这个 swf 就可以。而另外一种方式能够编译出一个 html 文件。訪问一下会出
现一下界面:
输入 dfdff,则输出 hello dfdff。说明调用 java 类成功。不信我们能够看看 java
类在控制台上的打印。

java整合flex

配置成功,高兴吧,o(∩_∩)o…哈哈。
假设用 lcds,则不须要预编译,能够直接訪问 mxml 文件,lcds 会动态编译返回结果。

转载自:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147d8c8c4668d4e419ce3b4c413037bfa6663f405a8e906b6075a91f5fbdf43176610123b5999cc0169bac925f75ce786a6459db0144dc4df19c0c32c050872a9ab86891adf142cbfd9680c85523dd22026df7f69c2c0403bb6ee71541f4d7ef5f652e07ca9b2712ff&p=8b2a94039e8311a058ecc8601e56&user=baidu

解决:

倒数第11行的404 异常,我对照另外一种和第三种发现第三种漏了

java整合flex

这个目录,所以解决的方法:把漏的目录整个从另外一种拷一份到项目中、刷新,一定要刷新到到出现

java整合flex

这个目录有这些内容,才干够成功。

上一篇:【JUC源码解析】PriorityBlockingQueue


下一篇:Oracle- 日期加减