Using GWT with EJB
| GWT addresses the web layer and EJB, the middle layer, its natural to use both of them to have a neat J2ee app. In this small write-up I'll explain how to use them together. I assume that you know how to create EJB project and Web project with Eclipse WTP and Cypal Studio for GWT. For the second one, I’ve written a post here. If you are an advanced EJB developer and have used GWT for a while, “Use the RemoteServiceImpl as a EJB client and continue in the as usual way”. If don't clearly understand the above statement, then the rest of this writeup is for you. Assume that there is a text box and a button in a web page. When you type a person’s name in the textbox and press the button, the age of the person should be shown to the user. The first step is to create a Stateless Session Bean. The Remote & Home interface will look like this: public interface AgeServiceEjb extends EJBObject, Remote { public int getAge(String name); } public interface AgeServiceHome extends EJBHome { public AgeService create()throws …; } The EJB looks something like: public class AgeServiceBean implements SessionBean {//All EJB members here public int getAge(String name){ int age; if(name.equals(”Pranni”)) age = 18; //Pranni is always 18 :-) else if(name.equals(”GWT”)) age = 1; // GWT still young! else age = 40; // default value
return age; } }
I opted for a very simple implementation. Of course you can do the normal way of contacting the Data Layer. (Entity beans/plain JDBC/Hibernate). Check whether name is null or not, throw a NameNotFound exception. Its the plain old EJB code. GWT does not restrict anything here. If you already have some EJB, exposing it to an existing servlet or a swing client, very well, you can reuse that also. Now let us create a Remote service in the Web layer. The GWT’s RemoteService is very similar to the RemoteInterface of EJB: public interface AgeServiceGWT extends RemoteService{ public int getAge(String name); //other members like Util, SERVICE_URI etc ... } The RemoteService’s Impl is the key which connects GWT and EJB: public interface AgeServiceGwtImpl public int getAge(String name){ Context ctx = new InitialContext(); } Common problems:
|
- Prakash G.R.