dwr整合spring时,出现以下异常。
throw 'allowScriptTagRemoting is false.';
//#DWR-INSERT
//#DWR-REPLY
dwr.engine.remote.handleException("2","0",{javaClassName:"java.lang.Throwable",message:"Error"});
java.lang.IllegalArgumentException: object is not an instance of declaring class
google了一下,找到了相关做法。
dwr整合spring,我用的是dwr3rc1和spring2.5,当初整合时是查看了相关的图书《基于J2EE的Ajax宝典》和《DWR实战》。
图书介绍的整合方式是在dwr.xml 文件中加入
<allow>
...
<create creator="spring" javascript="Fred">
<param name="beanName" value="Shiela"/>
</create>
...
</allow>
运行后,发行firebug响应出现
throw 'allowScriptTagRemoting is false.';
//#DWR-INSERT
//#DWR-REPLY
dwr.engine.remote.handleException("2","0",{javaClassName:"java.lang.Throwable",message:"Error"});
后台报出
java.lang.IllegalArgumentException: object is not an instance of declaring class
重新查看DWR官网的文档,发现DWR整合spring已经有很大改动。重新按照官网的整合方式整合。
图书中介绍的整合方式已经过时,如果按照图书中的整合方式整合可能出现上述异常。
并且在对于如果dwr调用了使用了AOP的spring bean,应该加上<aop:scoped-proxy/>
例如
<bean id="B" class="com.bjinfotech.spring.practice.service.NoteServiceImpl">
<aop:scoped-proxy/> <!-- This is needed or DWR gets confused. -->
<dwr:remote javascript="noteRemoteService">
<dwr:include method="addNote" />
</dwr:remote>
<property name="noteDao" ref="noteDao" />
</bean>
dwr调用了使用了AOP的spring bean B,实际上是调用了spring bean B的代理类而不是B本身,
所以报出java.lang.IllegalArgumentException: object is not an instance of declaring class。加上
<aop:scoped-proxy/> ,根据官网手册2.0.5版3.4的解释,类似的
当DWR调用了一个使用B对象的方法时,实际调用的是代理对象的方法。
随后代理对象会从容器中获取真正的B对象,并将方法调用委派给获取到
的实际的B对象。这样DWR就得到了B对象,而不是B对象的代理,就不会报出
java.lang.IllegalArgumentException: object is not an instance of declaring class
(对象不是声明类的实例异常)。
经验教训:
1.使用新框架时,最好查看官网的最新文档,图书比较容易过时。
图书上的做法如果过时之后,容易出错。
2.使用框架时,要调试成debug模式,这次使用DWR时 ,没有一开始调成debug模式,
结果控制台不报如何异常,非常难找是哪里出错了。
搜索相关做法来源:
1.http://www.javaeye.com/topic/409548
2.http://forum.springsource.org/showthread.php?t=57584
3.DWR官网的文档
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jianw2007/archive/2009/07/30/4394244.aspx
分享到:
相关推荐
配置整合DWR3.0和Spring2.5使用annotation注解
1. word文档记录了Struts2+Hibernate3+Spring2.5整合详细步骤,附有操作步骤的图示参考,并给出了各个步骤的注意事项; 2. 源代码实例包括一个完整模块的增删改查操作,可直接运行,可以在此基础上直接进行自己系统...
Dwr2+Struts2+Spring2.5+Hibernate3完美整合--用户登录注册系统
Spring2.5+Struts2.0+DWR完美整合完成用户登陆模块
NULL 博文链接:https://cuics-100.iteye.com/blog/710697
Struts2 + spring + hibernate + dwr 完美整合代码 dwr 用户注册 多级下拉联动 刷新表格.. 全部代码
NULL 博文链接:https://tianhengbao.iteye.com/blog/567580
整合 32 4.1 DWR与Servlet 32 4.1.1 使用webContext的方法: 32 4.1.2 方法选择 32 4.2 DWR与Spring 34 4.2.1 让DWR和Spring一起工作的检查列表 34 4.2.2 Spring Creator 34 4.2.3 ...
Dwr+Ajax实例和教程,通过struts1.2+spring2.5的整合而成。希望可以帮助到大家。
struts2+spring2.5+hibernate3.2整合所需的所有jar包,并额外包含了dwr.jar、分页组件pager-taglib、绘图组件jfreechart.jar、Excel解析工具包jxl.jar、数据库连接池工具包proxool.jar
2.5 使用Spring表达式语言 64 2.5.1 问题 64 2.5.2 解决方案 64 2.5.3 工作原理 65 2.6 设置Bean作用域 69 2.6.1 问题 69 2.6.2 解决方案 69 2.6.3 工作原理 70 2.7 自定义Bean初始化和析构 72 ...
struts2+spring2.5+hibernate3.2+dwr+MySQL驱动包 把上述包导了就没错了。 打包有个user.txt为数据库导出的,你导入mysql就行,里面的图片路径你没有,所以不会有图片,不用理会。test文件夹则是项目。 代码全,...
2.5 使用Spring表达式语言 64 2.5.1 问题 64 2.5.2 解决方案 64 2.5.3 工作原理 65 2.6 设置Bean作用域 69 2.6.1 问题 69 2.6.2 解决方案 69 2.6.3 工作原理 70 2.7 自定义Bean初始化和析构 72 ...
(Struts 2+Spring 2+Hibernate 3).pdf(完整版) 网上有高清版350M的。可以去下 http://115.com/file/be5gwid8 请于下载后 24H 内及时删除!请抱着学习的态度下载此资料。 总共900多页!!!!!!! 第1篇 ...