flex java spring_手把手教你使用flex eclipse整合spring

最先下载FlashBuilder_4_7_LS10_win64.exe试了几个eclipse安装插件都没成功,包括myeclipse8.5、spring sts2.9.2、eclipse3.5、j2eeeclipse版本4.2.0,后来搞了一个FlashBuilder_4_LS10.exe安装完找不到插件安装文件原来这个是单独版,必须插件版才行,最后下载FlashBuilder_4_Plugin_LS10.exe终于配置成功了,myeclipse8.5不行,spring sts可以了。

spring sts部署应用跟myeclipse不一样,比较类似eclipse。

用sts整合flex和java有几个步骤:

1:新建动态web工程flexweb,创建web.xml

2: blazeds-turnkey-4.0.0.14931.zip解压, 复制blazed两个文件夹flex和lib到WEB-INF下,里面是blaze的jar包和flex配置文件,然后修改web.xml加入blaze支持

flex.messaging.HttpFlexSession

MessageBrokerServlet

flex.messaging.MessageBrokerServlet

services.configuration.file

/WEB-INF/flex/services-config.xml

1

MessageBrokerServlet

/messagebroker/*

3:项目右键,添加/更改项目类型>添加flex类型项目,第一步,应用程序类型选择J2EE,下方选择BlazeDS,第二部根文件夹填入项目在workspase的路径加一个WebContent,如E:\workspaces\sts\flexweb\WebContent,根URL填http://localhost:8080/flexweb,上下文根目录/flexweb,输出文件夹使用默认E:\workspaces\sts\flexweb\WebContent\flexweb-debug,点击finish

4:转换完成后,目录有些变化,右键项目>properties>flex构建路径,主源文件夹改为flex_src,然后把自动生成的src目录下的flexweb.mxml移动到flex_src下,环境搭建就算完成了

HelloWorld

flexweb.mxml:

xmlns:s="library://ns.adobe.com/flex/spark"

xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">

import mx.controls.Alert;

import mx.rpc.events.ResultEvent;

protected function myFlex_resultHandler(event:ResultEvent):void{

var name:String=event.result as String;

Alert.show(name);

}

protected function button1_clickHandler(event:MouseEvent):void

{

myFlex.sayHello(txtName.text);

}

]]>

其中

指定了一个调用Java的类Hello,mytest对应到remoting-config.xml

在WEB-INFO/flex目录下remoting-config.xml加入

com.hongbo.Hello

result对应的是java方法调用的回调函数

建一个普通java类

package com.hongbo;

public class Hello {

public String sayHello(String name){

System.out.println("------------------------------------");

return "Hello First Demo " + name;

}

}

这样就OK了

第一次会报404,problems提示无法创建html包装器,右键点击重新创建模板

添加Spring支持

1:web.xml加入

contextConfigLocation

/WEB-INF/classes/applicationContext.xml

org.springframework.web.context.ContextLoaderListener

2:src下创建applicationContext.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

3:WEB-INF/flex/service-config.xml加入

添加java类

package com.hongbo;

import org.springframework.beans.BeansException;

import org.springframework.beans.factory.NoSuchBeanDefinitionException;

import org.springframework.context.ApplicationContext;

import org.springframework.web.context.support.WebApplicationContextUtils;

import flex.messaging.FactoryInstance;

import flex.messaging.FlexFactory;

import flex.messaging.config.ConfigMap;

import flex.messaging.services.ServiceException;

public class SpringFactory implements FlexFactory {

private static final String SOURCE = "source";

public void initialize(String id, ConfigMap configMap) {

}

public FactoryInstance createFactoryInstance(String id, ConfigMap properties) {

SpringFactoryInstance instance = new SpringFactoryInstance(this, id,

properties);

instance.setSource(properties.getPropertyAsString(SOURCE, instance

.getId()));

return instance;

} // end method createFactoryInstance()

public Object lookup(FactoryInstance inst) {

SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;

return factoryInstance.lookup();

}

static class SpringFactoryInstance extends FactoryInstance {

SpringFactoryInstance(SpringFactory factory, String id,

ConfigMap properties) {

super(factory, id, properties);

}

public String toString() {

return "SpringFactory instance for id=" + getId() + " source="

+ getSource() + " scope=" + getScope();

}

public Object lookup() {

ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(flex.messaging.FlexContext.getServletConfig().getServletContext());

String beanName = getSource();

try {

return appContext.getBean(beanName);

} catch (NoSuchBeanDefinitionException nexc) {

ServiceException e = new ServiceException();

String msg = "Spring service named '" + beanName

+ "' does not exist.";

e.setMessage(msg);

e.setRootCause(nexc);

e.setDetails(msg);

e.setCode("Server.Processing");

throw e;

} catch (BeansException bexc) {

ServiceException e = new ServiceException();

String msg = "Unable to create Spring service named '"

+ beanName + "' ";

e.setMessage(msg);

e.setRootCause(bexc);

e.setDetails(msg);

e.setCode("Server.Processing");

throw e;

}

}

}

}

4:修改remoting-config.xml

spring

hello

5:修改相应的Java类

package com.hongbo;

import com.hongbo.test.TestSpring;

public class Hello {

private TestSpring testSpring;

public void setTestSpring(TestSpring testSpring) {

this.testSpring = testSpring;

}

public String sayHello(String name){

return testSpring.testSpring(name);

}

}

package com.hongbo.test;

public interface TestSpring {

String testSpring(String name);

}

package com.hongbo.test.impl;

import com.hongbo.test.TestSpring;

public class TestSpringImpl implements TestSpring{

public String testSpring(String name){

System.out.println("test spring-------------------------------------"+name);

return "test spring "+name;

}

}

最后,flex打印语句trace不会打印到控制台,要先卸载flashplayer再安装一个debuger版的flashplayer,下载flashplayer_uninstall.zip,卸载,下载flashplayer10r12_36_winax_debug.exe,安装,卸载安装后好像谷歌浏览器没影响,然后eclipse修改默认浏览器为IE,window>preferences>General>Web browser,选择Internet Explorer,最后还有,启动tomcat后,必须在mxml上面右键debug运行,打开的IE才会打印trace,直接访问网址是不行的。

如有遗漏请指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值