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

原创粉丝点击