Getting Started with DWR

There are several ways to get started with DWR. We recommend the following:

  1. Follow the 5 steps outlined below.
  2. Download the dwr.war file and experiment with the examples.
  3. Once DWR is up and running learn how to write JavaScript for DWR.

DWR in 5 steps

1. Install the DWR JAR file

Download the dwr.jar file. Place it into the WEB-INF/lib directory of your web application.

2. Install the Commons Logging JAR file

DWR depends on Commons Logging. Download the commons-logging.jar and place it into the WEB-INF/lib directory of your web application.

3. Add the DWR servlet definition and mapping to your application's web.xml

Add the following lines to your web application's deployment descriptor (WEB-INF/web.xml). The <servlet> section needs to go with any existing <servlet> sections, and likewise with the <servlet-mapping> section.

<servlet>
  <display-name>DWR Servlet</display-name>
  <servlet-name>dwr-invoker</servlet-name>  
  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  <init-param>
     <param-name>debug</param-name>
     <param-value>true</param-value>
  </init-param>
</servlet>

<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

4. Create the DWR configuration file (dwr.xml)

Create a new file in you web application's WEB-INF directory (alongside web.xml) named dwr.xml.

A simple way to start is with something like this:

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
    "http://getahead.org/dwr/dwr30.dtd">

<dwr>
  <allow>
    <create creator="new" javascript="JDate">
      <param name="class" value="java.util.Date"/>
    </create>
    <create creator="new" javascript="Demo">
      <param name="class" value="your.java.Bean"/>
    </create>
  </allow>
</dwr>

The DWR config file defines what classes DWR can create and remote for use by Javascript. In the example above we are defining 2 classes that are remoted and giving the classes names in Javascript.

The new creator that we used above uses the public no-args constructor that all Java Beans must have. It is also worth remembering that DWR has one restriction:

Visit the dwr.xml documentation for a detailed description of the dwr.xml file, creators and converters.

5. Take DWR for a test drive!

Go to the following URL:

http://localhost:8080/[YOUR-WEBAPP-CONTEXT]/dwr/

You should see a page showing you the classes you configured in Step 4. Having followed a link you should see an index of all the methods ready for calling - simply enter the required parameters (if parameters are required) and click the execute button. These pages are valuable debugging tools and dynamically generated by DWR when the debug init-param is set to true.

How to make use of this from your web application

We have a whole section on writing Javascript with DWR, and there are a number of examples in the sidebar that demonstrate how to dynamically alter the text in web pages, update lists, manipulate forms and perform live table editing. Each has a description of how it works.

Another way to get started is to look at the source from the pages that you just viewed:

<script src='/[YOUR-WEBAPP-CONTEXT]/dwr/interface/[YOUR-SCRIPT].js'></script>
<script src='/[YOUR-WEBAPP-CONTEXT]/dwr/engine.js'></script>

You can omit the /[YOUR-WEBAPP-CONTEXT]/ section and use relative paths in your web pages if you wish.

Next Step: Learn about writing Javascript that interacts with DWR.

What if it doesn't work?

We have a page containing troubleshooting advice and common problems and their fixes. This is the first place to look.

If you are still having problems please join the mailing list and ask there.