`
vyyv
  • 浏览: 17585 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

网络相册开发(7)——Spring、Flex集成

    博客分类:
  • Flex
阅读更多

参考:

http://coenraets.org/flex-spring/

 

集成的关键是配置 Flex 目的文件以使其能够让 Spring 容器来管理实例化的 Spring beans

 

在 WEB-INF/flex/service-config.xml 中添加如下代码:

<factories> 
     <factory id="spring" class="net.sw.util.SpringFactory"/> 
</factories>

在 WEB-INF/flex/remote-config.xml中添加:

    <destination id="AlbumManager">
    	<properties>
    		<factory>spring</factory> 
    		<source>albumManager </source>
    		<scope>application</scope>
    	</properties>
    </destination>
    
    <destination id="PhotoManager">
    	<properties>
    		<factory>spring</factory> 
    		<source>photoManager </source>
    		<scope>application</scope>
    	</properties>
    </destination>

 

SpringFactory.java

package net.ourwork.friends.util;


import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;

import flex.messaging.FactoryInstance;
import flex.messaging.FlexFactory;
import flex.messaging.config.ConfigMap;
import flex.messaging.services.ServiceException;

/**
 * This interface is implemented by factory components which provide
 * instances to the flex messaging framework.  To configure flex data services
 * to use this factory, add the following lines to your services-config.xml
 * file (located in the WEB-INF/flex directory of your web application).
 *
 *	&lt;factories&gt;
 *     &lt;factory id="spring" class="flex.samples.factories.SpringFactory" /&gt;
 *  &lt;/factories&gt;
 *
 * You also must configure the web application to use spring and must copy the spring.jar
 * file into your WEB-INF/lib directory.  To configure your app server to use spring,
 * you add the following lines to your WEB-INF/web.xml file:
 *
 *   &lt;context-param&gt;
 *        &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
 *        &lt;param-value&gt;/WEB-INF/applicationContext.xml&lt;/param-value&gt;
 *   &lt;/context-param&gt;
 *
 *   &lt;listener&gt;
 *       &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;
 *   &lt;/listener&gt;
 * 
 * Then you put your spring bean configuration in WEB-INF/applicationContext.xml (as per the
 * line above).  For example:
 * 
 *  &lt;?xml version="1.0" encoding="UTF-8"?&gt;
 *  &lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&gt;
 *   
 *  &lt;beans&gt;
 *    &lt;bean name="weatherBean" class="dev.weather.WeatherService" singleton="true"/&gt;
 *  &lt;/beans&gt;
 *  
 * Now you are ready to define a destination in flex that maps to this existing service. 
 * To do this you'd add this to your WEB-INF/flex/remoting-config.xml:
 *
 *  &lt;destination id="WeatherService"&gt;
 *      &lt;properties&gt;
 *          &lt;factory&gt;spring&lt;/factory&gt;
 *          &lt;source&gt;weatherBean&lt;/source&gt;
 *      &lt;/properties&gt;
 *  &lt;/destination&gt;
 *
 * @author Jeff Vroom
 */
public class SpringFactory implements FlexFactory
{
    private static final String SOURCE = "source";

    /**
     * This method can be used to initialize the factory itself.  It is called with configuration
     * parameters from the factory tag which defines the id of the factory.  
     */
    public void initialize(String id, ConfigMap configMap) {}

    /**
     * This method is called when we initialize the definition of an instance 
     * which will be looked up by this factory.  It should validate that
     * the properties supplied are valid to define an instance.
     * Any valid properties used for this configuration must be accessed to 
     * avoid warnings about unused configuration elements.  If your factory 
     * is only used for application scoped components, this method can simply
     * return a factory instance which delegates the creation of the component
     * to the FactoryInstance's lookup method.
     */
    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()

    /**
     * Returns the instance specified by the source
     * and properties arguments.  For the factory, this may mean
     * constructing a new instance, optionally registering it in some other
     * name space such as the session or JNDI, and then returning it
     * or it may mean creating a new instance and returning it.
     * This method is called for each request to operate on the
     * given item by the system so it should be relatively efficient.
     * <p>
     * If your factory does not support the scope property, it
     * report an error if scope is supplied in the properties
     * for this 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;
            } 
        }
        
    } 

} 

 

分享到:
评论
1 楼 toeo 2009-03-14  
写的度很不错啊..加油啊..应用程序功能很炫...
很有意思.你这个是demo还是以后要用的东西....

相关推荐

    ASP网站实例开发源码——会员功能强大的图片储存网络相册SQL版本.rar

    这个压缩包文件"ASP网站实例开发源码——会员功能强大的图片储存网络相册SQL版本.rar"包含了一个使用ASP技术构建的网络相册应用,它集成了SQL数据库来存储和管理用户上传的图片。 1. **ASP基础概念**:ASP是...

    Iphone开发系列源码——Image图片缩放随着手指

    Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image...

    个人相册管理系统————VC++

    VC++,全称为Microsoft Visual C++,是微软公司推出的一款面向对象的C++集成开发环境。它不仅支持C++语言,还包含了MFC(Microsoft Foundation Classes)库,这是一个强大的Windows应用程序开发框架。MFC简化了窗口...

    电子相册管理系统——软件工程课程设.doc

    电子相册管理系统——软件工程课程设.doc

    ASP网站实例开发源码——会员功能强大的图片储存网络相册SQL版本.zip

    这是一个基于ASP技术的网站实例开发源码,专为创建一个具有强大图片存储功能的网络相册而设计。这个项目使用了SQL数据库来管理和存储用户上传的图片,提供了丰富的会员功能,使得用户可以方便地上传、修改和查看他们...

    ASP实例开发网站源码——测试完整无错的个人网络相册带后台管理.zip

    这个"ASP实例开发网站源码——测试完整无错的个人网络相册带后台管理.zip"压缩包包含了实现一个功能完备、无错误的个人网络相册的全部源代码,适合初学者学习和开发者参考。 首先,让我们深入了解一下ASP的关键概念...

    网络安全知识手册——生活篇.docx

    网络安全知识手册——生活篇全文共3页,当前为第1页。网络安全知识手册——生活篇全文共3页,当前为第1页。网络安全知识手册——生活篇 网络安全知识手册——生活篇全文共3页,当前为第1页。 网络安全知识手册——...

    基于Spring Boot网络相册设计与实现lw+ppt.rar

    《基于Spring Boot的网络相册设计与实现》 在当今数字化时代,网络相册作为存储、分享个人照片的重要工具,已经成为了人们生活中不可或缺的一部分。本文将深入探讨如何利用Spring Boot框架构建一个高效、稳定的网络...

    PHP实例开发源码——Imagevue 幻灯效果的在线php相册网站程序官方完整版.zip

    【PHP实例开发源码——Imagevue 幻灯效果的在线php相册网站程序官方完整版】 Imagevue是一款基于PHP的在线相册系统,它以其独特的幻灯片展示效果和易于使用的特性深受开发者和网站管理员的喜爱。这个源码包提供了一...

    PHP实例开发源码——相册 SlideShowPro Director.zip

    对于视频,SlideShowPro Director可能需要与其他第三方服务(如YouTube或Vimeo)集成,这就涉及到了API调用和数据交换,这需要我们具备一定的网络请求和JSON解析的知识。 最后,为了确保相册的安全性和性能,我们还...

    好看的FLEX相册

    标题中的“好看的FLEX相册”指的是一种使用Adobe Flex技术构建的相册应用,它在视觉呈现上具有吸引力,提供了良好的用户体验。Flex是基于ActionScript 3.0的开源框架,主要用于创建富互联网应用程序(RIA)。这类...

    iOS实例开发源码——PhotoAppLink for iOS.zip

    在iOS开发中,照片相关的功能是一个常见的需求,如从相册选取图片、编辑照片、分享照片等。PhotoAppLink 应用可能涉及到的API包括Photos框架(用于访问用户的照片库)和URL Scheme(用于应用程序间的跳转)。通过这...

    ASP网站实例开发源码——FlashPicViewer电子相册简体中文版(源码+数据库).zip

    这个压缩包“ASP网站实例开发源码——FlashPicViewer电子相册简体中文版(源码+数据库).zip”包含了一个使用ASP技术开发的FlashPicViewer电子相册系统,它是一个适用于展示图片的互动平台,特别适合个人或企业用来...

    QQ相册新功能——相册封面多图设置.docx

    这次的新功能——“相册封面多图设置”为用户提供了更加个性化和动态化的展示方式,让相册封面不再局限于单张图片,而是可以组合多张照片,创造出更具故事感和视觉冲击力的封面设计。 首先,这个新功能不仅美观,还...

    PHP实例开发源码——kh_mod php相册管理程序 final 简体中文版.zip

    【PHP实例开发源码——kh_mod php相册管理程序 final 简体中文版】 这个压缩包文件包含的是一个基于PHP语言开发的相册管理程序,名为"kh_mod",并且是简体中文版本,适合中国用户使用。PHP是一种广泛使用的开放源...

    ASP网站实例开发源码——丝语柔柔网络像册美化版(源码+数据库).zip

    这个"ASP网站实例开发源码——丝语柔柔网络像册美化版"是基于ASP技术的一个实际项目,提供了完整的源代码和数据库,旨在帮助开发者学习和理解ASP在创建互动式网络相册应用中的应用。 1. **ASP基础概念** - ASP是...

    javascript+jquery的网络相册

    9. **API集成**:许多现代网络相册会集成社交媒体API,如Facebook或Instagram,允许用户直接从其社交账号导入图片。这需要理解API的调用方式和授权机制。 10. **性能优化**:为确保相册运行流畅,需要考虑性能优化...

    Flex相册 Flex图片

    Flex相册 Flex图片

Global site tag (gtag.js) - Google Analytics