专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Flex

Flex 经过 Spring 和J2EE交互

发布时间:2011-06-27 19:33:34 文章来源:www.iduyao.cn 采编人员:星星草
Flex 通过 Spring 和J2EE交互

 



1、
View页面中
Xml代码 
    <mx:RemoteObject 
    id="userManagementDataService"  destination="UserManagementDataService"/>
    

    2、
    destination 对应于remote-config.xml中的destination节点
    remote-config.xml
    Xml代码 
       <destination id="UserManagementDataService">
      		<properties>
      			<factory>mySpring</factory>   
      			<source>UserManagementDataService</source>
      		</properties>
      	</destination>
      

      <factory>mySpring</factory>
      就是通过它调用applicationContext.xml 中bean节点的,

      <source>UserManagementDataService</source>
      对应于bean节点的id

      3、
      mySpring是自己写的类,在services-config.xml中有相应的配置
      Xml代码
        <factories>
        <factory id="mySpring" class="springFactory.SpringFactory"/>
        </factories>


        4、
        这里的 class 是要自己写的类,也就是 SpringFactory 类
        (注意这里要引入jar包 spring.jar(WebApplicationContextUtils))

        (可能还要引的包有 commons-dbcp.jar , commons-pool-1.4.jar)

        Java代码
          package springFactory;
          
          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;
              }
              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;
                      }
                  }
                 
              }
          }


          5、
          在Web.xml中配置 applicationContext.xml的监听
          Xml代码 
            <context-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>/WEB-INF/applicationContext.xml</param-value>
            </context-param>
                <listener>
                  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
                </listener>



            6、在applicationContext.xml 中配置
            Xml代码
               <bean 
              id="UserManagementDataService" class="dataService.UserManagementDataService">
              	</bean>


              在页面中通过RemoteObject 通过Spring来调用J2EE中的方法了 
              友情提示:
              信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

              其他相似内容:

              热门推荐: