jee+blazeds+flex配置(Java工程和 Flex 工程独立)

我们要实现的目的:

1.希望在eclipse里面可以创建flex项目。

2.flex中编辑的mxml文件,保存后能够自动的生成flash文件和html文件以供测试,当然正式发布的时候很多的HTML是要删除的。

3.利用eclipse在工程中实时同步机制,把我们编译后的flashhtml文件直接同步到web工程,然后工程自动部署到tomcat,这样测试就很方便了,因为同步flashhtml文件到tomcat根本就不用重新启动。

注意我们的关键点本质上只是把flex项目的编译输出直接到web工程。

环境搭建:我的环境是eclipse3.4,里面集成了FB3_WWEJ_Plugin.exejdk1.5

blazedsweb工程的搭建:eclipse中先创建个web项目myflex,注意要导入blazeds里面的相关jar,web.xml,还有WEB-INF里面flex目录下面的所有文件

接下来在服务器端可以简单的写个helloWorld的类了,相关的配置弄好

package com.spell;

public class HelloWorld {

    public String sayHello(String name) {

        return "hello," + name;

    }

}

WebRoot/WEB-INFO/remoting-config.xml中加入id="Hello"destination

    <destination id="Hello">

        <properties>

            <source>com.spell.HelloWorld</source>

        </properties>

    </destination>

ok,可以部署到tomcat了,并且启动tomcat,这个时候不要着急着去测试

flex工程的搭建:这个是最让人恼火的地方了,这个地方上我走了很多的弯路,看那了网络上很多人所谓的配置,结果差点把我给搞死。后来还是自己的思路清晰点。

建个flex工程,输入工程的名称flexTestapplication type 选择 web application, server technology 选择none,点nextoutput folder 中选择你上面建立web工程的目录(这里就是myflex)这个很重要了,要不这边flex就不会自动到web工程了,那只有人工的拷贝了,这样做是很悲哀滴!!最后finish,好了这样flex工程也好了

flexTest.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.rpc.events.ResultEvent;   
      [Bindable]   
      private var helloResult:String;   
      
      private function sayHello():void {   
        ro.sayHello(inputText.text);   
        }    
        
       private function resultHandler(event:ResultEvent):void {   
          helloResult = event.result as String;   
       }
       
   ]]>  
</mx:Script >
<mx:RemoteObject id="ro" destination="Hello" result="resultHandler(event)"
endpoint="/myflex/messagebroker/amf"/>
<mx:HBox x="0" y="10" width="100%">
   <mx:Label text="Name:" id="nameLabel"/>
   <mx:TextInput id="inputText"/>
   <mx:Button label="say Hello" id="nameButton" click="sayHello()"/>
   <mx:Label id="resultLabel" text="{helloResult}"/>
</mx:HBox>
</mx:Application>

这个文件好了后,你只要保存下就可以敲入URL测试了(保存后马上就outputmyflex项目中了,然后又自动同步到tomcat,前面tomcat已经启动了),我的是http://localhost:8080/myflex/flexTest.html,表单中输入名字,然后点下按钮,就跟你说hello了,是不是很兴奋了,恭喜flex你入门了。这里一定要指定endpoint要不然与服务器的交互会失败,endpoint/myflex根据你web项目的名称不同而不同。endpoint不要指定死,如:http://localhost:8080/myflex/messagebroker/amf,这样到了以后部署的时候是会有错误的。

后续:

根据例子配置了flex+java+BlazeDS,但是提示说有问题:

Couldn't establish a connection to 'helloworld'

查得资料http://zerozone.javaeye.com/blog/60846

出错原因是找不到destination,或者是channels的问题,做后在RemoteObject中指定endpoint,测试通过

<mx:RemoteObject id="ro" destination="helloworld" result="resultHandler(event)" endpoint="http://localhost:8080/flex/messagebroker/amf"/>

但是新的问题来了,总不能写死吧~,是不是mxml在编译的时候可以读取属性文件,然后替换endpoint的属性呢?比如在mxmlendpoint="${endpointAmf}" , 然后在属性文件中配置endpoint.amf=http://localhost:8080/flex/messagebroker/amf,这样编译的时候替换掉。

后来测试过了endpoint=“flex/messagebroker/amf这样也是可以的,这样可以随着服务器变迁部署而不会出现问题了

 

上面的东西转自别人的,在次略有修改,在次向他说声谢谢……

我的个人体验:我照着上面步骤做了一下,完了之后输入http://localhost:8080/myflex/flexTest.html404,找不到文件,最后

<welcome-file-list>

        <welcome-file>flexTest.html</welcome-file>

        <welcome-file>index.htm</welcome-file>

</welcome-file-list>

加了一个欢迎页,就OK了,也没有出现后续中的那种错误。

你可能感兴趣的:(java,eclipse,tomcat,String,Flex,application)