• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    手把手教你使用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支持

    listener>
      listener-class>flex.messaging.HttpFlexSession/listener-class>
     /listener>
    
     
     !-- MessageBroker Servlet -->
     servlet>
      servlet-name>MessageBrokerServlet/servlet-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:项目右键,添加/更改项目类型>添加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:

    ?xml version="1.0" encoding="utf-8"?>
    s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"   
         xmlns:s="library://ns.adobe.com/flex/spark"   
         xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">  
     
     fx:Script>  
      ![CDATA[  
       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);  
       }  
      ]]>  
     /fx:Script>  
     
     fx:Declarations>  
      !-- 将非可视元素(例如服务、值对象)放在此处 -->  
      s:RemoteObject id="myFlex" destination="mytest" result="myFlex_resultHandler(event)"/>  
     /fx:Declarations>  
     s:Button x="209" y="135" label="按钮" click="button1_clickHandler(event)"/>  
     s:TextInput x="166" y="81" id="txtName"/>  
     s:Label x="10" y="81" text="请输入内容:" fontSize="15" fontWeight="bold" fontFamily="中易黑体"/>  
    /s:Application>

    其中

    s:RemoteObject id="myFlex" destination="mytest" result="myFlex_resultHandler(event)"/>

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

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

    destination id="mytest">
        properties>
          source>com.hongbo.Hello/source>
        /properties>
      /destination>

    result对应的是java方法调用的回调函数
    建一个普通java类

    package com.hongbo;
    
    public class Hello {
    
     public String sayHello(String name){
      System.out.println("------------------------------------");
      return "Hello First Demo " + name;
     }
    }

    这样就OK了

    访问路径是http://localhost:8080/flexweb/flexweb-debug/flexweb.html


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

    添加Spring支持

    1:web.xml加入

    context-param>
      param-name>contextConfigLocation/param-name>
      param-value>/WEB-INF/classes/applicationContext.xml /param-value>
     /context-param>
     listener>
      listener-class>org.springframework.web.context.ContextLoaderListener/listener-class>
     /listener>

    2:src下创建applicationContext.xml

    ?xml version="1.0" encoding="UTF-8"?>
    beans xmlns="http://www.springframework.org/schema/beans"
     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">
    
     bean id="hello" class="com.hongbo.Hello">
      property name="testSpring">
       ref bean="testSpring"/>
      /property>
     /bean>
     bean id="testSpring" class="com.hongbo.test.impl.TestSpringImpl"/>
    /beans>

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

    factories>
       factory id="spring" class="com.hongbo.SpringFactory" /> 
     /factories>

    添加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

    destination id="mytest">
        properties>
         factory>spring/factory>
          source>hello/source>
        /properties>
      /destination>

    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,直接访问网址是不行的。
    如有遗漏请指出

    您可能感兴趣的文章:
    • 详解MyEclipse中搭建spring-boot+mybatis+freemarker框架
    • Eclipse配置springIDE插件的方法步骤
    • Eclipse搭建spring开发环境图文教程(推荐)
    • 详解eclipse下创建第一个spring boot项目
    • Eclipse 使用Maven构建SpringMVC项目
    • Eclipse使用maven搭建spring mvc图文教程
    • MyEclipse2017创建Spring项目的方法
    上一篇:Flex 错误(mx.messaging.messages::RemotingMessage)分析
    下一篇:flex小技巧之加载GIF图片
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    手把手教你使用flex eclipse整合spring 手把手,教你,使用,flex,eclipse,