package flex.spring;
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).
*
* <factories>
* <factory id="spring" class="flex.samples.factories.SpringFactory" />
* </factories>
*
* 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:
*
* <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>
*
* Then you put your spring bean configuration in WEB-INF/applicationContext.xml (as per the
* line above). For example:
*
* <?xml version="1.0" encoding="UTF-8"?>
* <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
*
* <beans>
* <bean name="weatherBean" class="dev.weather.WeatherService" singleton="true"/>
* </beans>
*
* 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:
*
* <destination id="WeatherService">
* <properties>
* <factory>spring</factory>
* <source>weatherBean</source>
* </properties>
* </destination>
*
* @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;
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
BookStore.rar (66个子文件)
BookStore
.project 2KB
flex_libs
PureMVC_AS3_2_0_3.swc 11KB
.settings
org.eclipse.jdt.ui.prefs 99B
org.eclipse.core.resources.prefs 88B
org.eclipse.wst.common.component 595B
org.eclipse.jdt.core.prefs 330B
org.eclipse.wst.common.project.facet.core.xml 269B
org.eclipse.jst.common.project.facet.core.prefs 288B
.mymetadata 300B
WebRoot
WEB-INF
flex
messaging-config.xml 513B
remoting-config.xml 530B
services-config.xml 4KB
proxy-config.xml 826B
web.xml 2KB
src
lib
classes
flex
spring
SpringFactory.class 2KB
SpringFactory$SpringFactoryInstance.class 3KB
org
hunk
bookstore
service
BookService.class 1KB
data
Book.class 2KB
Book.hbm.xml 1KB
BookDAO.class 5KB
log4j.properties 1KB
applicationContext.xml 1KB
bin
AC_OETags.js 8KB
BookStore.swf 554KB
history
history.js 24KB
historyFrame.html 807B
history.css 371B
playerProductInstall.swf 657B
BookStore.html 4KB
META-INF
MANIFEST.MF 252B
.actionScriptProperties 979B
html-template
AC_OETags.js 8KB
index.template.html 4KB
history
history.js 24KB
historyFrame.html 807B
history.css 371B
playerProductInstall.swf 657B
pic
参考图片.bmp 993KB
.myeclipse
src
flex
spring
SpringFactory.java 6KB
org
hunk
bookstore
service
BookService.java 802B
data
Book.java 1KB
BookDAO.java 4KB
Book.hbm.xml 1KB
log4j.properties 1KB
applicationContext.xml 1KB
hibernate.reveng.xml 452B
.springBeans 320B
.classpath 5KB
flex_src
ApplicationFacade.as 1KB
BookStore.mxml 505B
org
hunk
bookstore
control
command
UpdateBookCommand.as 2KB
StartUpCommand.as 951B
DeleteBookCommand.as 1KB
CreateBookCommand.as 1KB
GetBooksCommand.as 1KB
view
BookListMediator.as 2KB
components
BookForm.mxml 1KB
BookList.mxml 1KB
BookFormMediator.as 2KB
event
BookEvent.as 816B
business
BookServiceDelegate.as 1KB
model
BookProxy.as 1KB
vo
Book.as 330B
util
Utils.as 352B
.myhibernatedata 530B
.flexProperties 321B
共 66 条
- 1
资源评论
- qq8922352011-11-09实例不错 。要能配个说明文档就更好了。
hspeed
- 粉丝: 12
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功