package flex.samples.factories;
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;
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Flex4+BlazeDS+Spring+Hibernate 整合源码.rar (72个子文件)
t1
userroles.sql 1KB
flex
.actionScriptProperties 1KB
.flexProperties 300B
html-template
index.template.html 5KB
swfobject.js 25KB
history
historyFrame.html 798B
history.css 365B
history.js 25KB
playerProductInstall.swf 657B
.settings
org.eclipse.core.resources.prefs 88B
src
t1flex.mxml 1019B
.project 811B
libs
web
.springBeans 530B
.myhibernatedata 506B
.settings
org.springframework.ide.eclipse.beans.core.prefs 226B
org.springframework.ide.eclipse.core.prefs 7KB
org.eclipse.jdt.core.prefs 330B
src
com
haha
dao
UserRoleDao.java 383B
biz
UserRoleBiz.java 418B
bean
Userroles.java 595B
Userroles.hbm.xml 680B
flex
samples
factories
SpringFactory.java 6KB
hibernate.cfg.xml 919B
spring
applicationContext.xml 2KB
applicationContext-daobiz.xml 645B
.project 2KB
WebRoot
swf
textLayout_1.0.0.595.swf 256KB
rpc_4.0.0.14159.swf 203KB
swfobject.js 25KB
framework_4.0.0.14159.swf 1013KB
t1flex.html 5KB
history
historyFrame.html 798B
history.css 365B
history.js 25KB
t1flex.swf 80KB
osmf_flex.4.0.0.13495.swf 147KB
sparkskins_4.0.0.14159.swf 68KB
playerProductInstall.swf 657B
spark_4.0.0.14159.swf 490KB
META-INF
MANIFEST.MF 252B
WEB-INF
web.xml 2KB
src
classes
com
haha
dao
UserRoleDao.class 807B
biz
UserRoleBiz.class 756B
bean
Userroles.class 893B
Userroles.hbm.xml 680B
flex
samples
factories
SpringFactory.class 2KB
SpringFactory$SpringFactoryInstance.class 3KB
hibernate.cfg.xml 919B
spring
applicationContext.xml 2KB
applicationContext-daobiz.xml 645B
flex
messaging-config.xml 513B
proxy-config.xml 826B
services-config.xml 4KB
remoting-config.xml 530B
lib
commons-codec-1.3.jar 46KB
mysql-connector-java-5.0.6-bin.jar 515KB
concurrent.jar 168KB
backport-util-concurrent.jar 319KB
commons-httpclient-3.0.1.jar 273KB
flex-messaging-core.jar 599KB
flex-messaging-opt.jar 20KB
xalan.jar 3MB
commons-logging.jar 37KB
flex-messaging-proxy.jar 64KB
flex-messaging-remoting.jar 18KB
cfgatewayadapter.jar 15KB
flex-messaging-common.jar 92KB
spring.tld 17KB
spring-form.tld 69KB
index.jsp 829B
.mymetadata 279B
.classpath 2KB
.myeclipse
共 72 条
- 1
lijun7788
- 粉丝: 639
- 资源: 46
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页