Voici un tutorial simple pour créer un projet utilisant GoogleWebToolkit & EJB3
Utilise : GWT 1.4.60, Netbeans 6.1, glassfish v2
Créer un projet de type entreprise application
Lui donner un nom, garder les options par défaut, puis cliquer sur finish
Ajouter un entity bean au projet
Clic droit sur le projet EJB (se termine par -ejb), New, Entity Class.
Specifier un nom de classe et de package, ne pas oublier de cliquer ensuite sur create a persistance unit. Ici, on va créer une entité "Student"...
Pour ce test, dans Datasource, choisir jdbc/sample, puis valider.
Dans le code source generé, rajouté deux attributs String : firstName, lastName, puis les getters/setters appropriés.
Ajouter un session bean au projet
Clic droit sur le projet EJB (se termine par -ejb), New, Session Bean.
Donner un nom, choisir un package, laisser les autres options par défaut, valider.
Une classe et une interface sont generées.
effectuer un clic droit dans le code source de la classe, et choisir persistence, use entity manager, rajouter ensuite une methode addStudent :
public void addStudent(String firstName, String lastName, AsyncCallback callback);
le service est prêt...
Interface utilisateur utilisant le service et les EJBs
Lors de l'ajout de GWTau projet ejb, plusieurs fichiers ont été créés, dont "gwtEntryPoint.java". Il s'agit du "point d'entrée de l'application web"... on va le modifier légèrement...
Mais auparavant, nous allons modifier le fichier GWTServiceUsageExample.java et modifier les attributs et le constructeur pour parvenir à ça :
public class GWTServiceUsageExample extends VerticalPanel {
private Label lblServerReply = new Label();
private TextBox txtFirstName = new TextBox();
private TextBox txtLastName = new TextBox();
private Button btnSend = new Button("Send to server");
public GWTServiceUsageExample() {
add(new Label("FirstName & LastName: "));
add(txtFirstName); // modifie
add(txtLastName); // rajoute
add(btnSend);
add(lblServerReply);
// Create an asynchronous callback to handle the result.
final AsyncCallback callback = new AsyncCallback() {
public void onSuccess(Object result) {
lblServerReply.setText((String)result);
}
public void onFailure(Throwable caught) {
lblServerReply.setText("Communication failed");
}
};
// Listen for the button clicks
btnSend.addClickListener(new ClickListener(){
public void onClick(Widget w) {
getService().myMethod(txtFirstName.getText(), txtLastName.getText(), callback);
}
});
}
/* aucune modification ici */
public static GWTServiceAsync getService(){
// Create the client proxy. Note that although you are creating the
// service interface proper, you cast the result to the asynchronous
// version of
// the interface. The cast is always safe because the generated proxy
// implements the asynchronous interface automatically.
GWTServiceAsync service = (GWTServiceAsync) GWT.create(GWTService.class);
// Specify the URL at which our service implementation is running.
// Note that the target URL must reside on the same domain and port from
// which the host page was served.
//
ServiceDefTarget endpoint = (ServiceDefTarget) service;
String moduleRelativeURL = GWT.getModuleBaseURL() + "gwtservice";
endpoint.setServiceEntryPoint(moduleRelativeURL);
return service;
}
}
Ensuite, modifions gwtEntryPoint et remplaçons la méthode onModuleLoad par celle-ci :
public void onModuleLoad() {
RootPanel.get().add(new GWTServiceUsageExample());
}
Iil ne reste plus qu'à...
Tester et déployer
Faites click droit sur le projet, puis run, une fenetre s'ouvre, suivre le lien...arrivée sur un formulaire, remplir un prenom puis un nom, et valider, on devrait obtenir ceci :
si c'est le cas, c'est que ça s'est bien passé...
Vérification
Retournez sur netbeans, choisissez l'onglet Services, puis Databases, jdbc... /sample, Tables, chercher la table Student, click droit dessus, puis view data... L'entrée ajoutée devrait être listée