<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.umiacs.umd.edu/adapt/index.php?action=history&amp;feed=atom&amp;title=Netbeans%3ANetbeansGWTRPC</id>
	<title>Netbeans:NetbeansGWTRPC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umiacs.umd.edu/adapt/index.php?action=history&amp;feed=atom&amp;title=Netbeans%3ANetbeansGWTRPC"/>
	<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/adapt/index.php?title=Netbeans:NetbeansGWTRPC&amp;action=history"/>
	<updated>2026-04-07T13:50:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://wiki.umiacs.umd.edu/adapt/index.php?title=Netbeans:NetbeansGWTRPC&amp;diff=1960&amp;oldid=prev</id>
		<title>Scsong at 23:08, 11 September 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/adapt/index.php?title=Netbeans:NetbeansGWTRPC&amp;diff=1960&amp;oldid=prev"/>
		<updated>2008-09-11T23:08:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:08, 11 September 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l180&quot;&gt;Line 180:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 180:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Build and run the project and it should be a slightly more verbose Hello World.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Build and run the project and it should be a slightly more verbose Hello World.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*&lt;/del&gt;Deployment to a real Tomcat instance&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===&lt;/ins&gt;Deployment to a real Tomcat instance&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Add the servlet to the &amp;#039;&amp;#039;web.xml&amp;#039;&amp;#039; file:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Add the servlet to the &amp;#039;&amp;#039;web.xml&amp;#039;&amp;#039; file:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l213&quot;&gt;Line 213:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 213:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Development jar is not necessary and user jar will fail to load because it contains &#039;&#039;javax.servlet.Servlet&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Development jar is not necessary and user jar will fail to load because it contains &#039;&#039;javax.servlet.Servlet&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For more information: [[media:gwt-tutorial-4.tar.gz|GWT Tutorial 4]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For more information: [[media:gwt-tutorial-4.tar.gz|GWT Tutorial 4]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Scsong</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/adapt/index.php?title=Netbeans:NetbeansGWTRPC&amp;diff=1959&amp;oldid=prev</id>
		<title>Scsong at 23:07, 11 September 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/adapt/index.php?title=Netbeans:NetbeansGWTRPC&amp;diff=1959&amp;oldid=prev"/>
		<updated>2008-09-11T23:07:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==AJAX/RPC: Quick and Dirty==&lt;br /&gt;
&lt;br /&gt;
Read the GWT docs if you want more detail.&lt;br /&gt;
&lt;br /&gt;
===Create Service Interface===&lt;br /&gt;
&lt;br /&gt;
Goes in the client package, must extend &amp;#039;&amp;#039;RemoteService=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package edu.umiacs.gwt.hello.client;&lt;br /&gt;
&lt;br /&gt;
import com.google.gwt.user.client.rpc.RemoteService;&lt;br /&gt;
&lt;br /&gt;
public interface HelloWorldService extends RemoteService&lt;br /&gt;
{&lt;br /&gt;
    public String doService(ServiceRequest request);&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Serialize Custom Types===&lt;br /&gt;
&lt;br /&gt;
Custom types must implement the &amp;#039;&amp;#039;IsSerializable&amp;#039;&amp;#039; marker. Class *MUST* have an *explicit* empty constructor. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package edu.umiacs.gwt.hello.client;&lt;br /&gt;
&lt;br /&gt;
import com.google.gwt.user.client.rpc.IsSerializable;&lt;br /&gt;
&lt;br /&gt;
public class ServiceRequest implements IsSerializable&lt;br /&gt;
{&lt;br /&gt;
    private String greeting;&lt;br /&gt;
    private char punctuation;&lt;br /&gt;
        &lt;br /&gt;
    public ServiceRequest(){}&lt;br /&gt;
    &lt;br /&gt;
    public ServiceRequest(String greeting, char punctuation)&lt;br /&gt;
    {&lt;br /&gt;
        this.setGreeting(greeting);&lt;br /&gt;
        this.setPunctuation(punctuation);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public String getGreeting(){ return greeting; }&lt;br /&gt;
    public void setGreeting(String greeting) { this.greeting = greeting; }&lt;br /&gt;
    public char getPunctuation(){ return punctuation; }&lt;br /&gt;
    public void setPunctuation(char punctuation) { this.punctuation = punctuation; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create Async Service Interface===&lt;br /&gt;
&lt;br /&gt;
Define the exact same methods the non-async interface contains but have all methods return void and append an &amp;#039;&amp;#039;AsyncCallback&amp;#039;&amp;#039; parameter to the end of each method. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package edu.umiacs.gwt.hello.client;&lt;br /&gt;
&lt;br /&gt;
import com.google.gwt.user.client.rpc.AsyncCallback;&lt;br /&gt;
&lt;br /&gt;
public interface HelloWorldServiceAsync&lt;br /&gt;
{&lt;br /&gt;
    public void doService(ServiceRequest request, AsyncCallback ac);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Implement the Service===&lt;br /&gt;
&lt;br /&gt;
In the root package, create a package named &amp;#039;&amp;#039;service&amp;#039;&amp;#039; which will hold all server-side, non-translatable code. Create the implementation class in this package. Class must extend &amp;#039;&amp;#039;RemoteServiceServlet&amp;#039;&amp;#039; and implement the non-async service interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package edu.umiacs.gwt.hello.server;&lt;br /&gt;
&lt;br /&gt;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;&lt;br /&gt;
import edu.umiacs.gwt.hello.client.HelloWorldService;&lt;br /&gt;
import edu.umiacs.gwt.hello.client.ServiceRequest;&lt;br /&gt;
&lt;br /&gt;
public class HelloWorldServiceImpl extends RemoteServiceServlet &lt;br /&gt;
        implements HelloWorldService&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    public HelloWorldServiceImpl()&lt;br /&gt;
    {&lt;br /&gt;
        System.out.println(&amp;quot;HelloWorldServiceImpl.&amp;lt;init&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public String doService(ServiceRequest request)&lt;br /&gt;
    {&lt;br /&gt;
        return request.getGreeting() + &amp;quot; to the world&amp;quot; + &lt;br /&gt;
                request.getPunctuation();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Register the Servlet with the Shell===&lt;br /&gt;
&lt;br /&gt;
In the &amp;#039;&amp;#039;ModuleName.gwt.xml&amp;#039;&amp;#039; file, add a servlet element:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;module&amp;gt;&lt;br /&gt;
   &amp;lt;inherits name=&amp;quot;com.google.gwt.user.User&amp;quot;/&amp;gt;      &lt;br /&gt;
   &amp;lt;entry-point class=&amp;quot;edu.umiacs.gwt.hello.client.HelloWorldApp&amp;quot;/&amp;gt;      &lt;br /&gt;
   &amp;lt;servlet class=&amp;quot;edu.umiacs.gwt.hello.server.HelloWorldServiceImpl&amp;quot; path=&amp;quot;/hello-service&amp;quot;/&amp;gt;        &lt;br /&gt;
&amp;lt;/module&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The path is relative to the context root. &lt;br /&gt;
&lt;br /&gt;
===Invoke the service===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package edu.umiacs.gwt.hello.client;&lt;br /&gt;
&lt;br /&gt;
import com.google.gwt.core.client.EntryPoint;&lt;br /&gt;
import com.google.gwt.core.client.GWT;&lt;br /&gt;
import com.google.gwt.user.client.rpc.AsyncCallback;&lt;br /&gt;
import com.google.gwt.user.client.rpc.ServiceDefTarget;&lt;br /&gt;
import com.google.gwt.user.client.ui.Button;&lt;br /&gt;
import com.google.gwt.user.client.ui.ClickListener;&lt;br /&gt;
import com.google.gwt.user.client.ui.Label;&lt;br /&gt;
import com.google.gwt.user.client.ui.RootPanel;&lt;br /&gt;
import com.google.gwt.user.client.ui.VerticalPanel;&lt;br /&gt;
import com.google.gwt.user.client.ui.Widget;&lt;br /&gt;
&lt;br /&gt;
public class HelloWorldApp implements EntryPoint&lt;br /&gt;
{&lt;br /&gt;
    Label lblSayHello = new Label();&lt;br /&gt;
    &lt;br /&gt;
    public void onModuleLoad()&lt;br /&gt;
    {&lt;br /&gt;
        GWT.log(&amp;quot;onModuleLoad()&amp;quot;, null);&lt;br /&gt;
        &lt;br /&gt;
        Button btnAsk = new Button(&amp;quot;Say something&amp;quot;);&lt;br /&gt;
        btnAsk.addClickListener(new ClickListener()&lt;br /&gt;
        {&lt;br /&gt;
            public void onClick(Widget w)&lt;br /&gt;
            {&lt;br /&gt;
                lblSayHello.setText(&amp;quot;...Asking Server...&amp;quot;);&lt;br /&gt;
                retrieveMessageFromServer();&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        VerticalPanel vp = new VerticalPanel();&lt;br /&gt;
        vp.add(btnAsk);&lt;br /&gt;
        vp.add(lblSayHello);&lt;br /&gt;
        &lt;br /&gt;
        RootPanel root = RootPanel.get(&amp;quot;div1&amp;quot;);&lt;br /&gt;
        root.add(vp);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    private void retrieveMessageFromServer()&lt;br /&gt;
    {&lt;br /&gt;
        HelloWorldServiceAsync service = &lt;br /&gt;
                (HelloWorldServiceAsync)GWT.create(HelloWorldService.class);&lt;br /&gt;
&lt;br /&gt;
        ServiceDefTarget endpoint = (ServiceDefTarget)service;&lt;br /&gt;
        String moduleRelativeURL = GWT.getModuleBaseURL() + &amp;quot;hello-service&amp;quot;;&lt;br /&gt;
        endpoint.setServiceEntryPoint(moduleRelativeURL);&lt;br /&gt;
&lt;br /&gt;
        AsyncCallback callback = new AsyncCallback() &lt;br /&gt;
        {&lt;br /&gt;
            public void onSuccess(Object result) &lt;br /&gt;
            {&lt;br /&gt;
                String message = (String)result;&lt;br /&gt;
                lblSayHello.setText(message);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            public void onFailure(Throwable caught) &lt;br /&gt;
            {&lt;br /&gt;
                lblSayHello.setText(&amp;quot;Error: &amp;quot; + caught.toString());&lt;br /&gt;
            }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        service.doService(new ServiceRequest(&amp;quot;Hello&amp;quot;, &amp;#039;.&amp;#039;), callback);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ready to Run===&lt;br /&gt;
&lt;br /&gt;
Build and run the project and it should be a slightly more verbose Hello World.&lt;br /&gt;
&lt;br /&gt;
*Deployment to a real Tomcat instance*&lt;br /&gt;
&lt;br /&gt;
Add the servlet to the &amp;#039;&amp;#039;web.xml&amp;#039;&amp;#039; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;web-app&amp;gt;&lt;br /&gt;
    &amp;lt;servlet&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;hello-service&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-class&amp;gt;edu.umiacs.gwt.hello.server.HelloWorldServiceImpl&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;hello-service&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/hello-service&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet-mapping&amp;gt;    &lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modify the &amp;#039;&amp;#039;build.xml&amp;#039;&amp;#039; file to include the class files and the required libraries:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;-war-dist&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;war destfile=&amp;quot;dist/hello-world.war&amp;quot; webxml=&amp;quot;src/edu/umiacs/gwt/hello/web.xml&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;fileset dir=&amp;quot;dist/hello-world&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;lib dir=&amp;quot;dist/lib&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;exclude name=&amp;#039;gwt-dev*.jar&amp;#039;/&amp;gt;&lt;br /&gt;
         &amp;lt;exclude name=&amp;#039;gwt-user.jar&amp;#039;/&amp;gt;&lt;br /&gt;
      &amp;lt;/lib&amp;gt;&lt;br /&gt;
      &amp;lt;classes dir=&amp;quot;build/classes&amp;quot;/&amp;gt;            &lt;br /&gt;
   &amp;lt;/war&amp;gt;        &lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Development jar is not necessary and user jar will fail to load because it contains &amp;#039;&amp;#039;javax.servlet.Servlet=&lt;br /&gt;
&lt;br /&gt;
For more information: [[media:gwt-tutorial-4.tar.gz|GWT Tutorial 4]]&lt;/div&gt;</summary>
		<author><name>Scsong</name></author>
	</entry>
</feed>