DWR在和spring集成时,在dwr.xml中将设置creator="spring",告诉dwr将使用dwr的org.directwebremoting.spring.SpringCreator来创建对象实例,但是SpringCreator.getType地处理是不适当的,让我们来看看它的源码[dwr-3.0.0.116]:
public Class<?> getType()
{
if (clazz == null)
{
try
{
clazz = getInstance().getClass();
}
catch (InstantiationException ex)
{
log.error("Failed to instansiate object to detect type.", ex);
return Object.class;
}
}
return clazz;
}
我们再来看看它的getInstance,最终由spring来创建实例.
public Object getInstance() throws InstantiationException
{
try
{
if (overrideFactory != null)
{
return overrideFactory.getBean(beanName);
}
if (factory == null)
{
factory = getBeanFactory();
}
if (factory == null)
{
log.error("DWR can't find a spring config. See following info logs for solutions");
log.info("- Option 1. In dwr.xml, <create creator='spring' ...> add <param name='location1' value='beans.xml'/> for each spring config file.");
log.info("- Option 2. Use a spring org.springframework.web.context.ContextLoaderListener.");
log.info("- Option 3. Call SpringCreator.setOverrideBeanFactory() from your web-app");
throw new InstantiationException("DWR can't find a spring config. See the logs for solutions");
}
return factory.getBean(beanName);
}
catch (InstantiationException ex)
{
throw ex;
}
catch (Exception ex)
{
throw new InstantiationException("Illegal Access to default constructor on " + clazz.getName() + " due to: " + ex);
}
}
getInstance将返回由spring来创建的实例,很明显SpringCreator.getType有点多此一举,它先创建了实例,再从实例的getClass获取对象的类型,而spring的beanFactory.getType同样有此功能,但它不需要先创建实例.
也许写这位代码的仁兄是不知道spring beanFactory.getType这个方法吧!
我把SpringCreator.getType改正后的代码 如下:
public Class<?> getType()
{
if (clazz == null)
{
try
{
if(overrideFactory != null){
clazz=overrideFactory.getType(beanName);
}else {
if(factory == null)
factory = getBeanFactory();
clazz=factory.getType(beanName);
}
}
catch (Exception ex)
{
log.error("Failed to detect type.", ex);
return Object.class;
}
}
return clazz;
}
如果出现 Error loading class for creator ...... 那么就修改SpringCreator吧!
分享到:
相关推荐
DWR示例 包括DWR基本配置 DWR传递对象 DWR 反转ajax DWR与spring集成
spring-dwr-2.0.xsd spring 与 DWR进行配置
dwr与spring集成的两种方式,来之网上搜索的文档。。
dwr+spring集成配置 dwr采用annotation自动扫描的方式
dwr包.rar dwr.jar engine.js util.js dwr-noncla.jar readme.txt JAR File: dwr.jar (1.08Mb) To DWR enable your web-app WAR File: dwr.war (4.62Mb) Demos/Examples of what DWR can do Sources: dwr-...
dwr和spring集成简单例子!
DWR的各种版本Jar文件——dwr2.0.5.jar、dwr2.0.6.jar、dwr3.rc1.jar
将dwr集成到spring mvc(dwr的配置是基于xml)
spring+dwr实现用户名是否存在的判断
dwr+hibernate+spring 集成 实例 dwr+hibernate+spring 集成 实例
配置整合DWR3.0和Spring2.5使用annotation注解
介绍srping与dwr的集成:系统介绍dwr在spring中的相关配置。
dwr+spring+hibernate模板
NULL 博文链接:https://json20080301.iteye.com/blog/1892385
DWR2.0 相关配置文件 DWR2.jar + DWR.xml + DWR2.0.dtd + Web.xml
struts2.1 spring2.5 ibatis2.3 dwr3 annotation配置 集成 此中例子不完整. 如要下载:http://download.csdn.net/source/2138885
简单的dwr和ssh的集成,可能会有些不规范,但希望对学习集成有些帮助
Spring 集成 Dwr 文件上传和文件下载
dwr与spring集成,spring jdbc 数据库集成,spring注入例子