Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to setup GWT for Tomcat?

Tags:

tomcat

gwt

I am new to GWT and learning it via the the Google documents. How do I setup GWT with Tomcat? I am required to intergrate it with Tomcat for work purposes.

like image 764
user855 Avatar asked Jul 12 '10 18:07

user855


People also ask

What should I use for GWT?

You can use IntelliJ, NetBeans or any Java IDE you prefer. If you use a Java IDE other than Eclipse, the screenshots and some of the specific instructions in the tutorial will be different, but the basic GWT concepts will be the same.

What is GWT code?

1.1. The Google Web Toolkit (GWT) is a toolkit to develop Ajax web application with Java. The programmer writes Java code and this code is translated into HTML and Javascript via the GWT compiler. It seems that Google does not actively develop this framework anymore.


3 Answers

A more convenient method to run GWT in Development mode on external tomcat server is as follows. It involves two parts

  • Point tomcat to war dir of Gwt project in workspace
  • Run GWT in development mode on external server

I will be using following paths and names in this example

  • Web App Name - Fins
  • Project location - $HOME/workspace/fins
  • Project war directory - $HOME/workspace/fins/war
  • CATALINA_HOME - $HOME/apache-tomcat-7.0.29 (tomcat installation dir)

First step is to point tomcat to war dir of GWT project. One method to run GWT on external server is to copy static, image files and gwt dir to tomcat/webapps dir. On any changes in server side classes (like rcp etc) or static files we have to copy them again. This will be cumbersome during develpment cycle. Instead we can point tomcat to project's war directory so that tomcat runs the app directly from eclipse workspace. On any changes in project tomcat will do a reload.

To do this, add <appname>.xml (Fins.xml in this example) to $CATALINA_HOME/conf/Catalina/localhost with following content

<Context path="/Fins" docBase="/home/m/workspace/fins/war" reloadable="true"> </Context>

This is actually context.xml file found in META-INF of tomcat application but named as <appname>.xml. In case project use any JNDI datasources, they have to be added to this file.

  • DocBase attribute points to project's war dir in eclipse. With this tomcat is able to run the web app directly from eclipse workspace without copying files to tomcat/webapps dir.
  • Reloadable attribute ensures that tomcat reloads the app whenever files are modified in eclipse.

Now start tomcat. Check that application runs properly. Make some change in eclipse and app will be reload by tomcat. Cross verify the same in tomcat logs.

Now to second part. We can use GWT code sever feature as detailed in GWT Debug

To do this go to "Run As" option in project context menu and select "Web Application (Running on external server)". Enter external server root as Fins and give html page as Fins.html. This will run the GWT app in development mode without running embedded Jetty server.

But it will still point to http://localhost:8888/Fins/Fins.html. We have to edit Run configuration to change Jetty port 8888 to tomcat's 8080.

Go to run configurations and select Fin.html (external). Change browser field in GWT tab to http://localhost:8080/Fins/Fins.html


enter image description here


Run and access the app at

http://localhost:8080/Fins/Fins.html?gwt.codesvr=127.0.0.1:9997

Now you will be able to use GWT development mode fully.

like image 93
Maithilish Avatar answered Sep 28 '22 05:09

Maithilish


There is nothing special to do. You just have to compile your gwt project, and export the war folder to the Tomcats webapps folder.

What IDE are you using? If you are using eclipse or similar, and a newer version of tomcat, just export the contents of the war folder as a regular zip archive. Then change the extension from .zip to .war, and copy it to the webapps folder. Restart tomcat, and it will automatically unzip the archive and create the appropriate folder. I.E. the contents of the .war archive might look something like the following:

project_name.war
   - css
   - images
   - WEB-INF
   - gwt compiled_javascript folder
   - index.html
like image 20
igorbel Avatar answered Sep 28 '22 06:09

igorbel


I use GWT-SDK webAppCreator command (from terminal) and it generates all the files required to run on an external server like Tomcat.

I will provide the steps i followed in order to help others begin with simple GWT-TOMCAT development

TOMCAT

  1. Download a Tomcat version, i prefer Tomcat 6 http://apache.tsl.gr/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.zip
  2. Follow the instructions for your specific operation system in order to install it. I followed this tutorial (MAC-OS) http://www.malisphoto.com/tips/tomcatonosx.html

GWT

  1. Download a GWT-SDK version (i use 2.0.4 which i find more stable and compatible with external sources like EXT-GWT library and TOMCAT) http://code.google.com/p/google-web-toolkit/downloads/list
  2. Open your TERMINAL if you are a UNIX user then change directory to the GWT-SDK you just downloaded
  3. Change permissions to run webAppCreator script. I usually modify permissions of all files by typing - > chmod 750 *
  4. Create a GWT project by executing in terminal -> ./webAppCreator -out MyProject com.myproject
  5. All files are automatically generated
  6. Switch directory to the project you just created, type in terminal -> cd MyProject
  7. Compile your project with the ant script provided by the GWT-SDK, type in terminal -> ant build
  8. Open you project and copy it's build.xml file, war/ contents to Tomcat's webapps/ROOT folder
  9. FINALLY open your browser type localhost:8080/ to run your project (It will open your project .html page by default because it is defined inside /WEB-INF/web.xml file)

Congratulations!

like image 41
kostas trichas Avatar answered Sep 28 '22 06:09

kostas trichas