среда, 28 сентября 2011 г.

Ext GWT в Eclipse, с последующим запуском на Tomcat 7

Пару дней назад, вынуждено появилось свободное время и дабы не тратить его попусту, решил начать осваивать новый для меня веб-фреймворк java - Ext GWT.
Обычно я работаю в IDE Netbeans, но давно поглядывал в сторону Eclipse'a.

И так начнем по порядку:

1. Для того чтобы создать простенький проект в Eclipse с использованием Ext GWT, необходимо установить плагины для работы с GWT. Какие именно и как это сделать, смотрим здесь.
В статье выберите ссылку на детальное описание добавления плагинов (с картинками :)), в зависимости от версии вашего Eclipse'a

2. Добавим Ext GWT в Eclipse. Скачиваем последнюю версию Ext GWT (другое название - GXT). Распаковываем в любую папку на ваше усмотрение.
Запускаем Eclipse переходим в меню Window -> Preferences. В открывшемся окне в списке слева выбираем Java -> Build Path -> User Libraries.
Жмем кнопку New, пишем название, логично написать GXT, жмем ок.
Теперь добавим в нашу библиотеку необходимые jar-файлы. Жмем Add jaRs...
Переходим в распакованную папку Ext GWT и выбираем там jar с именем "gxt-2.2.5-gwt22.jar"























3. Создадим новый проект. File -> New -> Web Application Project.
введем его имя, например, Nix. Укажем имя пакета "главного" пакета. Проверим Google SDK, тот ли выбран по-умолчанию, который нам нужен. Уберем галочку с Use Google App Engine, ведь он нам не нужен, так как проект будет запускаться в Tomcat.
Жмем Finish. Проект создан.























4. Добавим в проект нашу библиотеку GXT. Для этого щелкаем правой кнопкой по корневой папке проекта и выбираем самый нижний пункт Properties. В открывшемся окне выбираем в списке слева Java Build Path.
Справа выбираем вкладку Librires и жмем Add Library, выбираем пункт User Library, жмем Next и ставим галочку напротив нашей GXT. Finish. Получаем такую картину:
















5. Из распакованой папки GXT скопируем папку "resources" и положим ее в папку проекта war. Есть сомнения, на счет того, что название war есть стандартное (вроде как я где-то это прописал, но уже не помню). Ориентируемся на папку в которой лежит папку WEB-INF, рядом с ней и кладем "resources". Вот изображение структуры проекта:























6. Добавим пару обязательных строк в несколько файлов.

а. Автоматически созданный файл в главном пакете Nix.gwt.xml
В него добавим строку
<inherits name="com.extjs.gxt.ui.GXT" />
сразу после
<!-- Other module inherits -->

б. В файле Nix.html добавим пару строк:
<link rel='stylesheet' type='text/css' href='resources/css/gxt-all.css' />
и
<script language='javascript' src='resources/flash/swfobject.js'></script>


7. Откроем файл Nix.java, его можно найти в пакете com.nix.main.client
Отредактируем его оставив лишь:

package com.nix.main.client;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.EntryPoint;
/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class Nix implements EntryPoint {
@Override public void onModuleLoad() {
   MessageBox.info("Message", "Hello World!!", null);
 } 
}

8. Откомпилируем проект щелкнув по нему правой кнопкой мыши и выбрав в меню Google -> GWT Compile. Насколько я понял это нужно сделать лишь один раз, для того, чтобы в папку war упали необходимые файлы GWT. В дальнейшем, при редактировании файлов,  Eclipse автоматически обновляет папку war.

9. Берем папку war и копируем ее в папку webapps Tomcat'a. переименуем ее в nix.
Теперь наше приложение открывается в любом браузере по адресу http://localhost:8080/nix/
Конечно же все зависит от настроек вашего Tomcat.
















П.С. Файлы из пакета com.nix.main.client кроме Nix.java можно удалить. Надо заметить, что информация о них автоматически удалится из WEB-INF/web.xml , что есть хорошо, ибо не нужно делать это вручную.

П.П.С В дальнейшем очень желательно написать скрипт сборки для Ant и собирать проект сразу же в папку веб-сервера или контейнера сервлетов. Хотя на первом этапе и при небольшом проекте можно просто копировать файлы каким-нибудь шеллом, наподобие far или mc.