dwr3.x spring 2.5 整合【转】
来源:互联网 发布:肯尼迪雾化器做丝数据 编辑:程序博客网 时间:2024/05/01 22:16
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.x spring 2.5 整合【转】
- Dwr3.x spring整合配置
- SpringMVC dwr3.0整合
- spring4整合dwr3
- DWR3+spring mvc实现
- spring3.0整合dwr3.0
- struts2.2.1+spring 3.0.3+hibernate3.6+dwr3.0全注解整合详解
- struts2.2.1+spring 3.0.3+hibernate3.6+dwr3.0全注解整合详解
- Spring与Struts1.x整合
- struts 1.x spring 整合
- spring与struts1.x整合
- struts1.x和spring整合
- Spring 4.X整合Quartz2.X配置
- spring 3.x整合ehcache 2.x
- spring 4.x + mybatis 3.x 整合
- spring boot spring cache ehcache3.x整合
- Struts2整合DWR3.0注册验证
- springMVC整合DWR3.0 与实例
- 自定义ContentProvider
- GCC帮助
- Android线程交互(Handler+Thread 和 AsyncTask)
- String的切分问题
- jsp获取浏览者IP地址方法
- dwr3.x spring 2.5 整合【转】
- 冒泡 关闭子窗口 刷新父窗口 功能
- Dynamic Host Configuration Protocol
- ASP.NET中防止页面多次提交的代码实现
- http://acm.hdu.edu.cn/showproblem.php?pid=1541 结点更新求最左区间的个数
- Oracle Explain Plan 执行计划
- jsp page指令
- F# and Iron Python
- logging libraries / 一些写日志的库