Recently we have finished a project in which we were using EJB3.0 in the business tier and a GWT client for the user interface. Here i will share you how we connected them in a very convenient way.
Suppose you have an Entity class, Department and a stateless Session Bean named DepartmentBean which implements a remote interface DepartmentBeanRemote. To save a department the bean class
has a create method
public BigInteger create(Department department) { try { em.persist(department); em.flush(); return department.getIdNr(); } catch (InvalidStateException in) { in.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } return null; }
Now how to call this create method from your GWT client?
First create a GWT RPC Service named DepartmentService and DepartmentServiceImpl is the implementation class of this service interface. The service implemenltation class will serve as a gateway between client and bean class.
Create an instance of DepartmentBeanRemote by dependency injection in DepartmentServiceImpl.
@EJB private DepartmentBeanRemote departmentBeanRemote;Now use this instance to call the methods of the DepartmentBean in the following way
public Long create() { try { Department department = new Department(); department.setIdNr(null); department.setDepartmentNameSt("Computer Science"); department.setDepartmentDescriptionSt("Most popular department of the university"); BigInteger returnValue = departmentBeanRemote.create(department); return new Long(returnValue.toString()); } catch (Exception e) { e.printStackTrace(); return null; } }Call the service method from the client. You have just made a complete path between your GWT Client and the Session Beans.
2 comments:
Hi, how you share POJO "Department" between two projects - ejb project and GWT project?
Department entity class can not be shared between two project. You need another class in GWT Project DepartmentModel which will serve as a DTO. Read this tutorial to get a clear idea <a href = "http://zawoad.blogspot.com/2010/06/google-app-engine-jdo-and-gxtext-gwt.html">Google App Engine, JDO and GXT(Ext GWT) Grid - Make All These Working Together</a>
Post a Comment