您的位置:首页 > 编程语言 > Java开发

给java web项目利用BlazeDS添加flex(Flex3)支持——整合基础

2011-10-07 11:55 483 查看
个人整理,作者:javalzbin
声明:
此文章是个人总结的简单内容
文章是简单的hello world,认为简单的别看,以免浪费你的时间
转载保留原创地址

新建web工程,给当前web工程添加flex支持

Web 工程目录



首先下载BlazeDS 然后解压BlazeDS.war到%TOMCAT_HOME%/webapps目录下文件名为blazeds内包涵了WEB-INF和META-INF文件夹,目录为:



添加blazeds 支持:

%TOMCAT_HOME%/webapps/blazeds/WEB-INF/lib目录下面所有jar文件拷贝到工程的webRoot/WEB-INF/lib 目录下

将%TOMCAT_HOME%/webapps/blazeds/WEB-INF/flex目录拷贝到工程的webRoot/WEB-INF 下.

最后,项目目录为



配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
<display-name>BlazeDS</display-name>
<description>BlazeDS Application</description>
<!-- 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>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


至此,项目就集成了blazeDS功能了,写个hello world 经典测试类

package com.lzbin.test;
public class HelloWorld {
public String sayHelloTo(String name){
return "Hello World "+name;
}
}


打开工程的WebRoot/WEB-INF/flex/remoting-config.xml,添加一个供flex 客户端调用的destination

<?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="Hello">
<properties>
<source>com.lzbin.test.HelloWorld</source>
</properties>
</destination>
<!-- 配置的重点是这里结束 -->

</service>


然后,先部署项目到tomcat目录下 ,启动tomcat,目的一是为了看看能不能正确启动,目的二,是为了在%TOMCAT_HOME%/webapps目录下产生一个文件夹,此文件夹就是当前项目的对应的部署文件

然后,就是为项目添加flex的支持,选种项目点右键 Flex Project Nature → Add Flex Project Natrue ,如下图(前提是,eclipse装了Flex Builder 插件)



然后,弹出一个框,如图:



点next后,弹出:



注意了!!!!!

这里的Root folder要指向你Tomcat下的Webapps里的项目下面(这就是为什么刚刚要先部署下项目的原因,要不找不到)

Root URL是你用来调试用的,localhost后面的名子要和上面Root folder里的要相同,

Context root 这里也是的,

output folder :指Filex编译程序的位置,即,编译后的文件放置到哪里,选择放置到tomcart目录下,设置如下图



注意,设置完Root folder、Root URL、Context root三个后,要按下Validate Configuration按钮进行校验,然后点Finish完成

接下来就是配置环境了,未设置的时候,项目是会报错的

现在的目录为:



配好环境就可以了,首先,选中项目,右键 → Properties 弹出



选择,Flex Build Path 然后在右边选择Library path ,可以看到SDK出错信息,

选中,把它remove掉

然后,点Flex Build Path选项,在Source path 选项卡中,点Add Folder在弹出的对话框中写上flex_src。这表示所有的FLEX文件都放在这里,这个文件夹就是FLEX的源文件夹!如同JAVA里src一样!写完后点OK就可以了,然后在下面的Main source folder也改成flex_src

设置完之后,选择Flex Compiler,如下图,



设置Flex SDK Version为 use default SDK 其他不变,然后点击下apply按钮,回到Flex Build Path 然后在右边选择Library path,可以看到:



然后选择,Flex Server,如下图的设置,



一般不改,然后点击OK,完成

此时,项目目录为



把Flex JavaTest.mxml放到flex_src下,以后建立此类型文件,都建立在这个下面

如下图:



然后可以看到一个错误



这个错误说缺少模板,可以选中,右击,选中“recreate HTML Templates”.你再刷新一下项目,你会看到项目里新增了一个“html-templates”文件夹

错误就没了,此时目录为:



启动tomcat,成功启动后,在



FlexJavaTest.mxml文件点右键,Run As → Flex Application

如下图:



然后,可以发现,浏览器就可以正常使用了

好,现在测试调用刚写的后台的java类,首先,修改FlexJavaTest.mxml 内容如下

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:RemoteObject id="say" destination="Hello">

</mx:RemoteObject>
<mx:Button x="335" y="80" label=" Click" click="remotingSayHello(event);"/>
<mx:TextInput x="159" y="80" id="tiName"/>
<mx:Label x="109" y="82" text="name:"/>
<mx:Label text="{say.sayHelloTo.lastResult}" x="44" y="162" width="448" height="71" id="lblView" color="#FCEE09" fontSize="20" fontWeight="bold" textDecoration="underline" fontStyle="normal"/>
<mx:Script>
<![CDATA[
function remotingSayHello(event:Event):void{
var iname:String=tiName.text;
say.sayHelloTo(iname);
}
]]>
</mx:Script>
</mx:Application>


完毕!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: