Integrating DWR3 and Spring3

Exceptions while integrating DWR3 and Spring3.X annotation based MVC:

Following are the solutions for the Exception commonly occur while integration:

  1. “org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Cannot locate BeanDefinitionParser for element [annotation-scan]”.

Solution:

  • Don’t use DWR with version number  DWR 3.0M1(available in Maven Repository)
  • Use DWR0-RC1-116 or later version. You can down load the latest version from
<repositories>
 <repository>
   <id>repository.sonatype.org -public</id>
   <name>DWR repository</name>
   <url>https://oss.sonatype.org/content/groups/public</url>
 </repository>
</repositories>
<dependency>
 <groupId>org.directwebremoting</groupId>
 <artifactId>dwr</artifactId>
 <version>3.0.0-rc3-SNAPSHOT</version>
</dependency>
 2.If you are trying to keep DWR and Spring Configuration in the same xml file there may be a chance to occur duplicate name found Exception. 
org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘DwrAnnotationURLMapper’: Initialization of bean failed;nested exception is org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘dwrController’: Invocation of init method failed;nested exception is java.lang.IllegalArgumentException:java.lang.IllegalArgumentException:Duplicate name found
Solution: keep separate dwr.xml and don’t import into spring-config.xml file instead configure in web.xml as shown below

<servlet>
<servlet-name>SampleDWR</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath: dwr.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
  1. No adapter for handler [directwebremoting.spring.DwrController@1b3f577]: Does your handler implement a supported interface like Controller?

Solution: keep the following line of code in dwr.xml file

<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

This is because mvc: annotation-driven element doesn’t declare a SimpleControllerHandlerAdapter

  1. If you are using Tomcat7 and DWR.0-RC1-116.jar file then you will get

“CSRF Security Error”: java.lang.SecurityException: CSRF Security Error
Solution:

  • One fix is to make the default Tomcat 7 tomcat/conf/context.xml (or your application’s context XML) put the useHTTPOnly on the Context element, like so:
    <Context useHttpOnly=”false”>
  • You can also fix this issue by using the latest DWR build

https://oss.sonatype.org/content/groups/public/org/directwebremoting/dwr/3.0.0-rc3-SNAPSHOT/

8 thoughts on “Integrating DWR3 and Spring3

  1. Ryan says:

    Can’t download DWR 3.0.0-rc3-SNAPSHOT from sonatype.

    Error:
    Missing artifact org.directwebremoting:dwr:jar:3.0.0-rc3-SNAPSHOT:compile

      • ryanlsaplan says:

        Hi Mohan,

        Sorry I forgot to thank you on your post. And thanks for the reply.

        I’ve put both, the dependency and the repositories tags but I’m still getting the missing artifact error. I can’t get you the pom right now since it is holiday in our country and weekend is coming after. I’ll post the pom when I get back to office.

        But as a workaround, I downloaded the jar and put it in my .m2 directory. When I verified that my error was gone for annotation-scan, I contacted our admin to put the jar in our sonatype.

        Thanks,
        Ryan

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s