Archive for the ‘GWT’ Category

Googlipse is dead, long live Cypal Studio for GWT

April 25, 2007

The first time I heard about Google Web Toolkit, I was excited. I immediately downloaded it; wrote few samples and found that it was really a nice piece of software. But it lacked one thing – IDE integration. Although “GWT was intentionally designed to work well in any IDE”, there was no direct support for GWT in any IDE. I thought how about writing an Eclipse plugin for that? I’m not an Eclipse plugin developer. I was a pure C++ guy who has jumped into several layers of J2EE and .NET and settled as a mainline developer in a top SOA product. Eclipse plugin development is something I’ve to learn. I decided to give a try.

Result? Googlipse. That is my first plugin. With over 25,000 downloads and counting, it generated a good amount of interest. So I get bugs (yeah, sometimes I write embarrassing code) and people extend it. It was a wonderful experience in learning Eclipse and gave me a better understanding about the Open Source from the contributing perspective. Googlipse has shifted my career and now my day job is also plugin development. Besides all this, I’ve to kill Googlipse. Why? Because of the name!

I was over enthusiastic that I coined the name by joining two names: Google+Eclipse. The logo is also the same way, Google colored text in an Eclipse background. I thought who cares about the name. I was wrong.

Google’s legal department had “some trademark concerns about the name”. I was pointed to Google Branding Guidelines. So I decided to change the name and logo. Hmmmm. That means its virtually creating a new product (at least to the users who don’t worry about the code!) That is what I’ve done now. I’ve created a brand new product called “Cypal Studio for GWT“. It is hosted @ Google Code. Its essentially the same code base (with the same Apache 2.0 license) but with little changes and few bug fixes.

So what happens to Googlipse now? Its dead. Means there will be no more bug fixes, no more features. The existing downloads & code base will remain there @ SourceForge. The home page will be soon pointing to new product’s site (which is under development). Thus ends the story of my first Eclipse Plugin.

Game On !

January 15, 2007

Nominated Googlipse for Eclipse Foundation Awards.

Let me cross my fingers and wait for March 5th for the results to be announced at the EclipseCon 2007.

[Update: 23 Jan 2007]

The list of accepted nominations is huge with big players like Hibernate tools, Aptna IDE, Subclipse, etc. Its now too hard for a product like Googlipse (which is not even version 1 and focuses on a small community). Lets see …

GWT FAQ

December 28, 2006

I was searching for something on GWT recently. Didn’t find it. I thought there must be some FAQ on GWT. Unfortunately, there is nothing. I thought I’ll create one. As of now the basic site is up (Thanks to Google Creator, its all done in less than an hour, without touching any HTML or spending a single paise), I’ve to collect questions and update the site with proper answers. If you have any questions to be added, do send it to me. (prefeably with answers)

Google opens up GWT source code!

December 14, 2006

An awesome move by Google – whole of GWT is now opensourced. GWT’s user library was already opensourced with Apache license, but now the Java to Javascript compiler is also open sourced. The good thing is that they are accepting patches so you can submit your code to Google and become a committer as well.

Good work Google 🙂

GWT with EJB

October 12, 2006

A better and updated version is maintained here (http://grprakash.googlepages.com/gwtwithejb).
In this post, I thought I’ll explain how to use 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.

I assume that you know how to create EJB project and Web project with Googlipse. 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 you are not, then the rest of the post is for you.

What we are trying now is to have a text box in the web page and a button. When you key in a person’s name there and press the button, it will show the age of the person.

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(“Bill Gates”))
age = 51;
else
age = 40; // default value

return age;
}
}

I opted for a very simple implementation. Of course you have do the normal way of contacting the Data Layer. Use Entity beans or try plain JDBC or use Hibernate. Check whether name is null or not, throw a NameNotFound exception. Its the plain old normal EJB code. GWT never restricts anything here. If you already have some EJB, exposing it to a 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 Util, SERVICE_URI etc
}

The RemoteService’s Impl is the key which connects GWT and EJB:

public interface AgeServiceGwtImpl
extends RemoteServiceServlet
implements AgeServiceGwt{

public int getAge(String name){
Context ctx = new InitialContext();
AgeServiceHome hme =
(AgeServiceHome)ctx.lookup(“<JNDI name>”);
AgeServiceEjb ageService = hme.create();
return ageService.getAge(name);
}
}

You can do all the normal EJB client stuff here. Add parameters to create initial context, configure the JNDI name, cache the home interface, etc. If you have ever used JSP/servlets calling EJB code, think it in the same way. Treat the Impl class as a servlet (in fact it is!) and do the usual way.

Common problems:

  • How do I deploy the EJB in the GWT’s embedded Tomcat server?


You can’t. In fact you can’t deploy it even on an external Tomcat. Its just a web container. You need an app server like WebLogic or JBoss

  • How do I create a EAR file?


Create an EAR project and add these projects (EJB & Web) to it. Select File->Export->Export as EAR file

  • Can I deploy the application in an app server and still debug in hosted mode?


Yes. Look at “Deploying to an external server” in the GWT tutorial. Its the same way.