Wednesday, August 1, 2007

"Hello, world!" with DWR tool

DWR is tool for enabling RMI on web-server from JavaScript at the client.

What need you do to create first DWR application.

1) Download DWR library.
2) Add description to web.xml

<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

3) Create a class for remote invocation. Let it be following...
package my;
import ...
public class Server {

    private int count = 0;

    public int getCount() {return count;}

    public void increase() {count++}
}

4) Create dwr.xml description at WEB-INF.
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>
<allow>
<create creator="new" javascript="server">
<param name="class" value="my.Server"/>
</create>
</allow>
</dwr>

This means, if your-web-app/dwr/client.js is requested, DWR will create an instance of my.Server class and a JavaScript stub for it. You may see how this stub looks by link your-wed-app/dwr/interface/server

// Provide a default path to dwr.engine
if (dwr == null) var dwr = {};
if (dwr.engine == null) dwr.engine = {};
if (DWREngine == null) var DWREngine = dwr.engine;

if (server == null) var server = {};
server._path = '/jmxWebApp/dwr';
server.getCount = function(callback) {
dwr.engine._execute(client._path, 'client', 'invoke', callback);
}
server.increase = function(callback) {
dwr.engine._execute(client._path, 'client', 'setAttribute', callback);
}

5) Create page using Server invocaion.


<html>
<head>
    <title>DWR_JMX test</title>
    <script type="text/javascript" src='dwr/engine.js'></script>
    <script type="text/javascript" src='dwr/util.js'></script>
    <script type="text/javascript" src='dwr/server.js'></script>
</head>
<body>
    <script type="text/javascript">
        server.getCount(new Function("data", "alert(data);"));
        server.increase(new Function(alert("Value increased"));
        server.getCount(new Function("data", "alert(data);"));
    </script>
</body>
</html>

3 comments:

Carlos Adrián Rodríguez Oliva said...

What sould we expect when the program runs?

Mary said...

Hello, How do I get in touch with you? There is no email or contact info listed .. please advise .. thanks .. Mary. Please contact me maryregency at gmail dot com

for IT the said...

Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a Java developer learn from Java Training in Chennai. or learn thru Java Online Training in India . Nowadays Java has tons of job opportunities on various vertical industry.