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;
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
在flex的dataGrid控件中显示图片的实践 (146个子文件)
.actionScriptProperties 1KB
Pic.as 236B
PicDAO.class 5KB
SpringFactory$SpringFactoryInstance.class 3KB
SpringFactory.class 1KB
PicBusiness.class 1KB
Pic.class 1KB
IBusiness.class 309B
.classpath 6KB
history.css 365B
history.css 365B
.flexProperties 331B
index.template.html 6KB
prjDemoFlexPic.html 5KB
picview.html 5KB
picadd.html 5KB
historyFrame.html 885B
historyFrame.html 885B
xalan.jar 3MB
hibernate3.jar 2.31MB
jasperreports-2.0.5.jar 1.87MB
aspectjweaver.jar 1.47MB
jbosscache-core-3.1.0.GA.jar 1.1MB
iText-2.1.3.jar 1.02MB
poi-3.0.1.jar 888KB
freemarker.jar 852KB
jxl.jar 706KB
jboss-cache-1.4.1.GA.jar 690KB
flex-messaging-core.jar 669KB
c3p0-0.9.1.2.jar 596KB
c3p0-0.9.1.jar 594KB
javassist-3.9.0.GA.jar 583KB
commons-collections-3.1.jar 546KB
struts.jar 537KB
spring-beans.jar 477KB
spring-context.jar 466KB
proxool-0.8.3.jar 465KB
antlr-2.7.6.jar 433KB
spring-webmvc.jar 393KB
velocity-1.5.jar 383KB
log4j-1.2.15.jar 383KB
spring-orm.jar 369KB
log4j-1.2.14.jar 359KB
spring-jdbc.jar 328KB
spring-aop.jar 318KB
cglib-nodep-2.1_3.jar 317KB
dom4j-1.6.1.jar 307KB
commons-httpclient.jar 298KB
spring-core.jar 279KB
commons-httpclient-3.0.1.jar 273KB
hibernate-annotations.jar 273KB
cglib-2.2.jar 272KB
commons-lang.jar 237KB
sqljdbc.jar 227KB
spring-tx.jar 226KB
ehcache-1.2.3.jar 203KB
spring-jms.jar 191KB
spring-web.jar 190KB
spring-webmvc-portlet.jar 146KB
jotm.jar 121KB
commons-dbcp.jar 119KB
hibernate-entitymanager.jar 116KB
velocity-tools-view-1.4.jar 113KB
aspectjrt.jar 112KB
oscache-2.1.jar 112KB
flex-messaging-common.jar 94KB
xapool.jar 90KB
commons-io.jar 82KB
persistence.jar 69KB
hibernate-commons-annotations.jar 65KB
flex-messaging-proxy.jar 65KB
hibernate-validator.jar 61KB
commons-pool.jar 61KB
flex-rds-server.jar 53KB
commons-fileupload.jar 52KB
ejb3-persistence.jar 49KB
commons-codec-1.3.jar 46KB
commons-codec.jar 46KB
commons-logging.jar 37KB
spring-webmvc-struts.jar 36KB
commons-attributes-api.jar 35KB
asm-util-2.2.3.jar 34KB
asm-2.2.3.jar 34KB
swarmcache-1.0RC2.jar 30KB
commons-attributes-compiler.jar 29KB
slf4j-api-1.5.8.jar 23KB
flex-messaging-opt.jar 20KB
spring-aspects.jar 20KB
flex-messaging-remoting.jar 18KB
cfgatewayadapter.jar 15KB
portlet-api.jar 15KB
asm-commons-2.2.3.jar 15KB
jta-1.1.jar 13KB
slf4j-log4j12-1.5.8.jar 9KB
spring-tomcat-weaver.jar 9KB
aspectjlib.jar 8KB
spring-agent.jar 5KB
aopalliance.jar 4KB
SpringFactory.java 6KB
PicDAO.java 4KB
共 146 条
- 1
- 2
资源评论
- a13679496102012-06-07看不懂 没有代码注释!
zhhlk
- 粉丝: 63
- 资源: 32
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功