[an error occurred while processing this directive]

Getting message from the server using RPC( Remote Procedure Call )

                         

This examples describes the procedure of retrieving message from the server via RPC. The steps involved in geting message from the server are described below:-

Step1:-Right-click on the GWT project node which you have created and choose New > Other. In the New File wizard, click on the Google Web Toolkit category shows a file template named GWT RPC Service. Click Next.
Step2:-
Fill the sub package box, the name of the package where the files that will be generated will be stored.
Step3:-Click Finish. The Projects window will automatically updates to reflect changes
Step4:- Create the following Classes.

GWTService.java:- This is the client-side definition of the service.

package org.yournamehere.client;
import com.google.gwt.user.client.rpc.RemoteService;
public interface GWTService extends RemoteService{
    public String myMethod(String s);
}

GWTServiceAsync.java:-This is the client side definition. It provides a callback object that enables the asynchronous communication between server and client.

package org.yournamehere.client;
import com.google.gwt.user.client.rpc.AsyncCallback;

public interface GWTServiceAsync {
    public void myMethod(String s, AsyncCallback callback);
}

GWTServiceImpl.java:-This is the servlet that implements the interface. it provides the functionality for retrieving a quote via RPC.

package org.yournamehere.server;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import org.yournamehere.client.GWTService;

public class GWTServiceImpl extends RemoteServiceServlet implements
    GWTService {

    public String myMethod(String s) {
        return "Server says: " + s;
    }
}

GWTServiceUsageExample.java:-This is the interface that will instantiates the service.


package org.yournamehere.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class GWTServiceUsageExample extends VerticalPanel {
    private Label lblServerReply = new Label();
    private TextBox txtUserInput = new TextBox();
    private Button btnSend = new Button("Send to server");
    
    public GWTServiceUsageExample() {
        add(new Label("Input your text: "));
        add(txtUserInput);
        add(btnSend);
        add(lblServerReply);

        final AsyncCallback callback = new AsyncCallback() {
            public void onSuccess(Object result) {
                lblServerReply.setText((String)result);
            }
            
            public void onFailure(Throwable caught) {
                lblServerReply.setText("Communication failed");
            }
        };
        
          btnSend.addClickListener(new ClickListener(){
            public void onClick(Widget w) {
                       getService().myMethod(txtUserInput.getText(), callback);
            }
        });
    }
    
    public static GWTServiceAsync getService(){
       
        GWTServiceAsync service = (GWTServiceAsyncGWT.create(GWTService.class);
        ServiceDefTarget endpoint = (ServiceDefTargetservice;
        String moduleRelativeURL = GWT.getModuleBaseURL() "gwtservice";
        endpoint.setServiceEntryPoint(moduleRelativeURL);
        return service;
    }
}

Step4:-Change the entry point of class MainEntryPoint.java.Modify the onModuleLoad() method of the class to the following :-

public void onModuleLoad() {

        RootPanel.get().add(new GWTServiceUsageExample());
    }

Step6:-In the Projects window, right-click the project node and choose Run.

Output of the program

Download source code

                         

[an error occurred while processing this directive]